正则(前项肯定、后项肯定、前项否定、后项否定)
正则表达式语法中的断言,有的书上也称该语法为预查或者环视,都是一样的用法。有如下语法:
(?=pattern) 零宽正向先行断言
(?!pattern) 零宽负向先行断言
(?<=pattern) 零宽正向后行断言
(?<!pattern) 零宽负向后行断言
例如:正则表达式(?!pattern) 是零宽负向先行断言,它会往后匹配pattern,匹配到的位置在pattern之前,并且匹配到的字符串必须不满足pattern。
1、前置前项肯定?<=
前面必须是“abc"才能匹配后面写的内容
import rere.search(r"(?<=abc)\d+","abc123deb").group()
2、后置前项肯定?=
后面必须是“abc"才能匹配前面写的内容
import rere.search(r"(\d+(?=abc))","xbc123abc").group()
3、前后肯定组合匹配
前面必须是"xbc"后面必须是“abc"才能匹配之间写的内容
import rere.search(r"(?<=abc)(\d+(?=abc))","xbc123abc").group()
4、前项否定
前面不是"xbc"才能匹配后面写的内容
import rere.search(r"(?<!xbc)\d+","abc123abc").group()
#限制贪婪
re.search(r"(?<!xbc)\d+?","abc123abc").group()
5、后项否定
后面不是"xbc"才能匹配后面写的内容
import rere.search(r"\d+(?!xbc)","123abc").group()re.search(r"\d+(?!xbc)","123xbc").group()
\b#表示边界
import rere.search(r"\babc\b","abc")#有结果re.search(r"\babc\b","xabcdd")#无结果
原文链接:https://www.cnblogs.com/rychh/articles/10704636.html