最常用正则表达式总结

目录

1. 高频用法

2.正则表达式之注释

3.正则表达式之零宽断言

3.1 向右(前)肯定断言

3.2 向左(后)肯定断言

3.3 向右(前)否定断言

3.4 向左(后)否定断言

4. NotePad++中替换操作


1. 高频用法

ModeComments
[abc]匹配 "a"、"b"、"c" 其中任何一个字符。
[a-d1-4]匹配 "a"、"b"、"c"、"d"、"1"、"2"、"3"、"4" 其中任何一个字符。
[^abc]匹配除了 "a"、"b"、"c" 之外的任何一个字符。
[^a-d1-4]匹配除了 "a"、"b"、"c"、"d"、"1"、"2"、"3"、"4" 之外的任何一个字符。
.通配符,匹配除了少数字符(\n)之外的任意字符。
\d匹配数字,等价于 [0-9]。
\D匹配非数字,等价于 [^0-9]。
\w匹配单词字符,等价于 [a-zA-Z0-9_]。
\W匹配非单词字符,等价于 [^a-zA-Z0-9_]。
\s匹配空白符,等价于 [ \t\v\n\r\f]。
\S匹配非空白符,等价于 [^ \t\v\n\r\f]。
(?=…)非捕获组 – 向前断言. 例如’(.*)(?=ton)’ 表达式,当 遇到’Appleton’字符串时,会匹配为’Apple’.
(?<=…)非捕获组 – 向后断言. 例如’(?<=sir) (.*)’ 表示式,当遇到’sir William’ 字符串时,匹配为’ William’.
常用组合
.*\d+必须包含数字
.*[a-zA-Z]必须包含英文
^.{8,12}$字符串长度是8-12位

2.正则表达式之注释

语法:

(?#comment)

eg: 
^(begin|end)$(?#注释:搜索某行只有"begin"或者"end"的字符串)

3.正则表达式之零宽断言

(Tips下述pattern可以是正则表达式,也可以是字符串字符)

3.1 向右(前)肯定断言

(?=pattern):断言自身出现的位置的后面能匹配表达式pattern。

Ex1:

\b\w+(?=ing\b), 匹配以ing结尾的单词的前面的不包含ing的部分,如查找 sleeping和cooking,它会匹配出sleep和cook.

Ex2:

d2(?=HH)  即从左向右查看文本,如果当前位置字符串(或字符,或正则表达式)d2匹配成功(即条件1),就查看右侧文本是否满足断言条件(即条件2),当条件1条件2都成立时就匹配成功。

hello-world2HH123    匹配结果为:d2

注:d2(?=HH)该表达式右侧不能有其他任何内容,否则表达式无效

3.2 向左(后)肯定断言

(?<=pattern) :断言自身出现的位置的前面能匹配表达式pattern。

Ex1:

(?<=\\)", 匹配所有被\转义过的双引号

Ex2:

(?<=[A-Z])\d{3}  从左向右查看文本,如果当前位置的左侧能与表达式(?<=[A-Z])匹配成功(即条件1),就进入下一个表达式\d{3}的匹配(即条件2)。当条件1条件2都成立时就匹配成功。

Line: hello-world2HH123

Line2: hello-world2HH12

匹配结果为:只有Line1的123被匹配

3.3 向右(前)否定断言

(?!pattern) :断言自身出现的位置的后面不匹配表达式pattern。

比如 \b\w+(?!=,), 匹配所有不以","结尾的单词的部分

3.4 向左(后)否定断言

(?<!pattern) :断言自身出现的位置的前面不匹配表达式pattern。

比如 (?<!\\)", 匹配所有没有被\转义过的双引号

4. NotePad++中替换操作

使用正则表达式的标记,通过()来包围想要用的字符,然后用\1 来替换字符串,第一个匹配文本。

文本Search stringReplace stringResult
Hi my name is Fredmy name is (.+)my name is not \1Hi my name is not Fred
The quick brown fox jumped over the fat lazy dogbrown (.+) jumped over the (.+)brown \2 jumped over the \1The quick brown fat jumped over the fox lazy dog

 

参考文献:

【1】菜鸟教程-正则表达式

【2】https://www.w3cschool.cn/regex_rmjc/regex_rmjc-iw3q28cq.html

【3】http://www.renrensousuo.com/zhengze.htm

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页