作者在 2021-03-28 02:47:41 发布以下内容
有时候在使用正则表达式做匹配的时候,我们希望匹配一个字符串,这个字符串的前面或后面需要是特定的内容,但我们又不想要前面或后面的这个特定的内容,(这里的特定内容是指字符串,如果是字符可以用^排除),这时候就需要零宽断言的帮助了。所谓零宽断言,简单来说就是匹配一个位置,这个位置满足某个正则,但是不纳入匹配结果的,所以叫“零宽”,而且这个位置的前面或后面需要满足某种正则。
- 正预测先行断言
- 断言自身出现的位置的后面能匹配表达式exp
- 语法格式
- (?=exp)
- 正回顾后发断言
- 断言自身出现的位置的前面能匹配表达式exp
- 语法格式
- (?<=exp)
- 负预测先行断言
- 断言此位置的后面不能匹配表达式exp
- 语法格式
- (?!exp)
- 负回顾后发断言
- 断言此位置的前面不能匹配表达式exp
- 语法格式
- (?<!exp)
示例
re.search(r'迅雷(?!不及掩耳)', '迅雷下载利器') # 匹配成功
re.search(r'迅雷(?!不及掩耳)', '迅雷不及掩耳之势') # 匹配失败