正则基本知识

1、基本字符集

字符集  完整集合 意义 备注
 \d  [0-9]  匹配数字  
 \D  [^0-9]  匹配非数字,包括空格等  
 \w  [_a-zA-Z0-9] 匹配单词字符,字母数字下划线  
 \W  [^_a-zA-Z0-9]  匹配非单词字符  [^\w]
 \s  [ \r\n\t]  匹配空白符,空格、回车换行、制表符  
 \S  [^ \r\n\t]  匹配非空白符  [^\s]
 \b    匹配单词边界 不消耗任何字符(零宽断言)
 \B    匹配非单词边界 不消耗任何字符(零宽断言)
\<    匹配单词边界开头 旧语法,部分支持
 \>     匹配单词边界结尾 旧语法,部分支持
       

 

 

 

 

 

 

 

 

 

 

 

2、元字符

 

元字符 意义 备注
^  匹配行的开始位置  
$  匹配行的结束位置  
. 匹配任意字符  
 (  左小括号  
 ) 右 小括号  
[ 左中括号  
] 右中括号  
 { 左大括号   
 } 右大括号   
 \ 斜杠   

 

 

 

 

 

 

 

 

 

3、正则表达式选项

 

字符 意义 备注
i 不区分大小写  
g  全局模式  
m 多行模式  

 

 

 

 

  

4、字符组

   字符组使用方括号表表达式[]。使用[]可以定义任意需要的字符组,例:[aeiou]匹配英文元音字符。

  字符组取反在[]表达式内部开头使用^,添加^表示取反操作,例:[^aeiou]匹配非英文元音字符。

常用字符组  

字符组 意义 备注
[0-9]

匹配任意数字,等同\d

 
[0-9a-zA-Z] 匹配字母数据,等同\w  
m 多行模式  

 

 

 

 

  字符组并集:[0-3[4-7]]取0-3任意字符与4-7任意字符的并集。

  字符组差集:[0-9&&[3-4]]取0-9任意字符但是不包括3、4两个数字。

5、量词

  贪心 :尝试匹配时,选定尽可能多的内容,如果匹配失败则回退一个字符继续尝试,即进行回溯操作。使用*标记为贪心。

  懒惰:尝试匹配时,从目标起始尝试匹配,每次检查一个字符,最后尝试匹配整个字符串。使用?号标记为懒惰。

  占有:尝试匹配时,覆盖整个目标然后尝试寻找匹配内容,但只尝试一次不会回溯。使用+号标记为占有。

     

字符 意义 备注
*  零个或多个  
+ 一个或多个  
零个或一个  

 

 

 

 

  {3} 重复3次

  {1,4}重复1-4次

  {0,1}零个或一个等同?

  {0,}零个或多个等同*

  {1,}一个或多个等同+

  

  懒惰量词:?,在模式后添加?表示匹配模式中最小项,只要找一任意一匹配就结束。

  例: 5*匹配0-多个数字5,添加懒惰后5*?,最小项是匹配0个5,则该模式不会匹配任何值。

  占有量词:+,在模式后添加+表示匹配模式时使用占有,把尽可能多个内容匹配,匹配后不回溯。

  例:5.*5匹配以5开头的且以5结尾的任意字符串。那么5.*5模式会匹配5.ddd5内容。

    添加占有量词+后,5.*+5,模式不会匹配5.ddd5内容,因为占有匹配尽可能多个的内容,

    结尾的5做为.查找的内容匹配,且匹配后不会回溯,导致不能匹配字符串。

 

 

6、子模式

  子模式等同子正则表达式。

  ^( \d  | [a-zA-Z] )$,这是个一个最基本的模式,用来匹配单个数值或字母。括号内\d是一个字模式,括号内[a-zA-Z]也是一个子模式。

  ^(T|t)h(e|eir)^ ,这是一个模式有两个子模式(T|t)、(e|eir)。

 

7、捕获分组和后向引用

  捕获分组:子模式中每个()内容都可以看做个分组用$+数字表示,例如:$1表示(T|t)匹配的字符引用。$2表示(e|eir)匹配的字符引用。

  非捕获分组:(?:(?i)the)),不捕获不区分大小写的字符the,该组意思时正则正常匹配,但是使用$1表示分组时该组不计数。

  命名分组:为子模式命名,后向引用时不使用$1形式,直接使用添加的命名进行引用。 

    例:(?<aa>\d{3}).后续引用时可直接使得aa来获得匹配到的内容。

  后向引用:捕获分组信息在,后续需要使用的地方可以使用$1或者$2直接使用。

 

8、环视

  环视也称零宽断言。

  正前瞻:

  反前瞻

  正后顾

  反后顾

  正前瞻示例:匹配the后面跟expression.

  

  反前瞻示例:匹配the,但是the后面不能是expression。反前瞻是正前瞻的取反操作。

  

  正后顾:

  

  

  

posted @ 2018-01-17 07:24  mopheify  阅读(163)  评论(0)    收藏  举报