正则(前项肯定、后项肯定、前项否定、后项否定)

正则表达式语法中的断言,有的书上也称该语法为预查或者环视,都是一样的用法。有如下语法: 

(?=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