正则 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:尽可能多=贪婪,尽可能少=惰性。

 

 

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