正則 regular expression(一):

元字符

 

  1. ^ 匹配輸入字符串的開始位置
  2. $ 匹配輸入字符串的結束位置 
  3. * 匹配前面的子表達式零次或多次
  4. + 匹配前面的子表達式一次或多次
  5. ? 匹配前面的子表達式零次或一次
  6. \d 匹配一個數字字符,等價於[0-9]
  7. \w 匹配一個包含數字、字母、下劃線的任何單個字符,等價於[a-zA-Z0-9_]
  8. \s 匹配任何空白字符,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。
  9. i 執行對大小寫不敏感的匹配
  10. g 執行全局匹配

 

中括號[] 的意義

中括號在正則中稱爲字符組(Character class)。

簡單字符組

[abc]代表a,b,c 中的任何一個

示例:

匹配 bat、cat、fat:

regx="[bcf]at",則“haovecatisfatsobat”可以匹配到cat,fat,bat

範圍字符組(Range class,與連字符 “-” 一起使用)

如果要匹配0-9可以寫成 [0123456789],但有了範圍字符組更簡潔了,可以寫成 [0-9]

[a-z,A-Z]代表英文字母中的任何一個

這裏最關鍵的是連字符 "-",不要理解爲減號。 它的意義是“從什麼到什麼”。

組合字符組(Combination class)

由多種字符組組合一起的字符組

[0-9_a-zA-Z]表示任意數字、下劃線、英文字母

需要注意的是,字符組內不要有空格

排除型字符組(Negated character class,與脫字符 “^” 一起使用)

排除型字符組表示:匹配一個未列出的字符(match a character that's not listed),而不是不要匹配列出的字符。

[abc]代表除了a,b,c 以外的任何字符

字符組運算(方括號嵌套+運算符)

方括號裏允許嵌套方括號,可以進行∩交,∪並,差運算

[a-d[m-p]]表示a-d或m-p中的任何字符(並)

[a-z&&[def]]表示d,e,f中的任何一個字符(交)

[a-f&&[^bc]]表示a,d,e,f(差)

中括號中的字符不再有特殊的含義

由於“.”代表任意一個字符,所以在正則表達式中如果想使用普通意義的點字符,必須使用[.]

"*"是限定符表示0或多次,如果想表達普通意義的星字符,必須使用[*]


限定修飾符

貪婪限定符 惰性限定符 說明
* *? 匹配零次或多次。
+ +? 匹配一次或多次。
? ?? 匹配零次或一次。
{n} {n}? 準確分配n次。
{n,} {n,}? 至少匹配 n次。
{n,m} {n,m}? 從n與m次。

數量 n 和 m 是整數常數。

這裏的原則是:一般的字符後面追加限定符是(儘可能多)的匹配匹配項,限定符後面追加問號的是(儘可能少)的匹配匹配項。

tips:儘可能多=貪婪,儘可能少=惰性。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章