正则表达式的先行断言(lookahead)和后行断言(lookbehind)
1. (?=pattern)
只匹配后面紧跟着
pattern
正则的那一部分
即:对后头提出要求,后头必须匹配pattern
正则
- 例如对"a regular expression"这个字符串:
要想只匹配"are
gular expression"中高亮的re
,则可以使用/re(?=gular)/g
。 - 测试结果如下: 正则表达式在线测试 | 菜鸟工具
2. (?!pattern)
只匹配后面紧跟着不是
pattern
正则的那一部分
即:对后头提出要求,后头不能匹配pattern
正则
- 例如对"a regular expression"这个字符串:
要想只匹配"a regular expre
ssion"中高亮的re
,则可以使用/re(?!g)/g
。
3. (?<=pattern)
只匹配前面是
pattern
正则的那一部分
即:对前头提出要求,前头必须匹配pattern
正则
- 例如对"a regular expression"这个字符串:
要想只匹配"are
gular expression"中单词开头的re
,则可以使用/(?<=\s)re/g
。
4. (?<!pattern)
只匹配前面不是
pattern
正则的那一部分
即:对前头提出要求,前头不能匹配pattern
正则
- 例如对"a regular expression are"这个字符串:
要想只匹配"a regular expre
ssion are"中单词中间的re
,
则可以使用/(?<!\W)re(?=\w)/g
。
标签:匹配,断言,lookahead,re,正则,regular,pattern,expression,lookbehind From: https://www.cnblogs.com/grblog/p/16776697.htmltips:
其中,\W
是\w
的否定,匹配任何非单词字符,等价于[^A-Za-z0-9_]
!\W 则相当于\w