正則表達式入門

---恢復內容開始---正則表達式

最簡單的單獨匹配一個單詞,如匹配blue.須要使用\b.它是元字符,表明着單詞的開頭或者結尾.只匹配一個位置.匹配單詞blue.\bblue\b.
一些元字符
  • \b匹配一個位置
  • .匹配除換行覺得任意字符
  • *表示重複零次或更屢次
  • \d匹配一個數字
  • \s匹配任意的空白符,如空格,製表符,換行符
  • \w匹配數字,字母,漢子,還有下劃線
  • ^匹配字符串的開始,$匹配字符串的結尾

舉例
  • \ba\w*\b匹配以a開頭的單詞(有多是abc,a正則,a_g_)
  • \d+匹配一個或者更多連續的數字
  • \b\w{6}\b匹配恰好6個單詞的單詞
  • ^\d{5,12}$匹配5到12位數字

重複的幾種表示方法
  • *重複零或者任意更屢次
  • +重複一次或更屢次
  • ?零或者一次
  • {n}重複n次
  • {n,}n或者更屢次
  • {n,m}n到m次

方括號的使用[]
  • [aeiou]匹配任何一個元音字母
  • [.?!]匹配其中一個標點符號
  • [0-9]匹配一個數字
  • [a-z 0-9 A-Z]

反義
  • \W匹配任意非字母,非數字,非漢子,非下劃線的字符
  • \S匹配除了空白符的字符
  • \D匹配任意非數字的字符
  • \B匹配不是單詞開頭或結尾的位置
  • 在方括號裏面使用^實現反義,[^a]匹配除了a之外的任意字符

分枝條件| 正則表達式裏的替換指的是有幾種規則,若是知足了其中一種規則都應該當成匹配
  • 0\d{2}-\d{8}|0\d{3}-\d{7}匹配兩種以連字符分割的電話號碼
  • \d{5}-\d{4}|\d{5}匹配美國的郵編,5位數字或者用連字號間隔的9位數字。
之因此給出這個例子,是要注意,使用分枝條件時,順序很重要。從左到右測試條件,一旦知足了某個條件,就不會去管後面的正則了。若是換成\d{5}|\d{5}-\d{4},用這個去匹配時,只能匹配到5位數字,或者9位數字的前五位
後向引用

還記得前面分組用的小括號嗎?後向引用就是給小括號編上號,從左到右依次爲1,2...測試

  • \b(\w+)\b\s+\1\b這裏的\1匹配前面的單詞
  • 能夠給子表達式自定義名字,使用?<name>例如?<word>\w+調用的時候使用\k<word>
零寬斷言
貪婪與懶惰
  • 默認貪婪匹配,如a.*b用在aababb上的話,會匹配整個字符串
  • 想要實現懶惰匹配,須要加上問號a.*?b這樣只會匹配aab
  • *? 重複任意次,但儘量少重複
  • +? 重複1次或更屢次,但儘量少重複
  • ?? 重複0次或1次,但儘量少重複
  • {n,m}? 重複n到m次,但儘量少重複
  • {n,}? 重複n次以上,但儘量少重複

---恢復內容結束---字符串

最簡單的單獨匹配一個單詞,如匹配blue.須要使用\b.它是元字符,表明着單詞的開頭或者結尾.只匹配一個位置.匹配單詞blue.\bblue\b.
一些元字符
  • \b匹配一個位置
  • .匹配除換行覺得任意字符
  • *表示重複零次或更屢次
  • \d匹配一個數字
  • \s匹配任意的空白符,如空格,製表符,換行符
  • \w匹配數字,字母,漢子,還有下劃線
  • ^匹配字符串的開始,$匹配字符串的結尾

舉例
  • \ba\w*\b匹配以a開頭的單詞(有多是abc,a正則,a_g_)
  • \d+匹配一個或者更多連續的數字
  • \b\w{6}\b匹配恰好6個單詞的單詞
  • ^\d{5,12}$匹配5到12位數字

重複的幾種表示方法
  • *重複零或者任意更屢次
  • +重複一次或更屢次
  • ?零或者一次
  • {n}重複n次
  • {n,}n或者更屢次
  • {n,m}n到m次

方括號的使用[]
  • [aeiou]匹配任何一個元音字母
  • [.?!]匹配其中一個標點符號
  • [0-9]匹配一個數字
  • [a-z 0-9 A-Z]

反義
  • \W匹配任意非字母,非數字,非漢子,非下劃線的字符
  • \S匹配除了空白符的字符
  • \D匹配任意非數字的字符
  • \B匹配不是單詞開頭或結尾的位置
  • 在方括號裏面使用^實現反義,[^a]匹配除了a之外的任意字符

分枝條件| 正則表達式裏的替換指的是有幾種規則,若是知足了其中一種規則都應該當成匹配
  • 0\d{2}-\d{8}|0\d{3}-\d{7}匹配兩種以連字符分割的電話號碼
  • \d{5}-\d{4}|\d{5}匹配美國的郵編,5位數字或者用連字號間隔的9位數字。
之因此給出這個例子,是要注意,使用分枝條件時,順序很重要。從左到右測試條件,一旦知足了某個條件,就不會去管後面的正則了。若是換成\d{5}|\d{5}-\d{4},用這個去匹配時,只能匹配到5位數字,或者9位數字的前五位
後向引用

還記得前面分組用的小括號嗎?後向引用就是給小括號編上號,從左到右依次爲1,2...get

  • \b(\w+)\b\s+\1\b這裏的\1匹配前面的單詞
  • 能夠給子表達式自定義名字,使用?<name>例如?<word>\w+調用的時候使用\k<word>
零寬斷言
貪婪與懶惰
  • 默認貪婪匹配,如a.*b用在aababb上的話,會匹配整個字符串
  • 想要實現懶惰匹配,須要加上問號a.*?b這樣只會匹配aab
  • *? 重複任意次,但儘量少重複
  • +? 重複1次或更屢次,但儘量少重複
  • ?? 重複0次或1次,但儘量少重複
  • {n,m}? 重複n到m次,但儘量少重複
  • {n,}? 重複n次以上,但儘量少重複
相關文章
相關標籤/搜索