正则表达式简单知识

1,普通字符:字母,数字,汉字,下划线等没有特殊含义的字符,匹配时匹配与之相对应的一个字符(单字符匹配)。

2,转义字符:

 

注意:表格最后一行都为正则表达式中的特殊含义符号匹配时都要加 \ 

3,字符集合:

注意:能与多字符进行匹配,且相应的大写为相反的意思(如:\D 表示为非数字)

4,自定义字符集合(方括号[ ] 表示可以匹配其中的任意一个字符,其中关系为”或“

注意:当特殊符号被包含到 方括号[ ] 中将失去其本身的含义,除了 ^ 和 -  比较特殊;

1,当 ^ 放在最前面的时候表示非 如上面[^abc] 表示匹配 a,b,c之外的任意一个字符,但是如果将 ^ 放在中间如[a^b]则表示匹配a或^或b。因此只要^没有放在最前面将不表示非的含义,如果非要将^放在最前面,有要其不表示非的含义可以加 \,如[\^ab] 表示匹配^或a或者b一个字符。

2,字符 - 与 ^ 差不多 ,只要不将 - 放在字符中间 就不表示 范围 如果非要放在字符中 则 加 \

如[f\-k]表示匹配f或-或f。

 

5,量词({ } 放在表达式后面):

例子:[a\-b]{2} 表示表达式[a\-b]重复出现两次可以匹配到如:aaacc-bm-a aab

           [a\-b]{2,3}表示表达式[a\-b]重复出现两到三次可以匹配到如:aaacc-bm-a aab

注意:当使用{m,n}量词时,默认是贪婪模式(如:[a\-b]{1,2} 当匹配到字符串aaaaa时他将会采用尽可能多的匹配方式即贪婪模式aaaaa 即先匹配两个aa再匹配两个aa然后再匹配一个a,而非先匹配一个a然后又一个a又一个a... 即aaaaa. 前面说的一个又一个匹配的叫非贪婪模式,即匹配尽可能少的字符 即aaaaa 只需要在{}后面加上字符 ?即 [a\-b]{1,2}?. ? + * 后面不能加?)

 

6,字符边界(零宽)

例子:^ab 匹配字符串

abdagdaffdafewhf

abghf

将整个字符串看成一个字符串然后匹配 最前面的ab

同理 hf$ 匹配到最后的 hf

\b 的用法:可以将其理解为一个虚拟位置 而且该位置前面和后面的字符必须最多有一个\w(字符下划线数字) 

 

 

7,选择和分组

 

8,零宽断言(一下表达式只是表示一个位置 即exp表达式位置前或则后面应该是什么)

例子:\w+(?=ing)  匹配字符串:going doing playing 匹配字符串以ing结尾的(红色部分)

           \w+(?!=ing) 与上面相反 匹配字符串不以ing结尾的

          (?<=go)ing 匹配字符串:going doing playing 匹配字符串以go开头ing结尾的(红色)           (?<!go)ing 相反 匹配不以go开头 以ing结尾的 字符串。going doing playing

                                                                                                                                        (本文部分内容来自网上视频 总结)

猜你喜欢

转载自blog.csdn.net/weixin_41237676/article/details/84400854