最常用正则表达式总结

目录

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值