一、肯定断言
1.1.前向肯定断言
前向肯定断言:表示你希望匹配的字符串前面是pattern匹配的内容时,才匹配。
语法:(?<=pattern)
1.2.后向肯定断言
后向肯定断言:表示你希望匹配的字符串的后面是pattern匹配的内容时,才匹配
语法:(?=pattern)
1.3.肯定断言说明
1、如果在一次匹配过程中,需要同时用到前向肯定断言和后向肯定断言时,那你必须将前向肯定断言表达式写在要匹配的正则表达式的前面,而后向肯定断言表达式写在你要匹配的字符串的后面,表示后向肯定模式之后,前向肯定模式之前。
2、前向肯定断言括号中的正则表达式必须是能确定长度的正则表达式,比如\w{3},而不能写成\w*或者\w+或者\w?等这种不能确定个数的正则模式符。
案例:获取C语言代码中的注释内容
import re
s=’’'char a=“hello world”; char b=‘c’; / this is
comment / int c=1; / this is multiline comment /’’’
a=re.compile(r"(?<=/*).(?=*/)")
print(a.findall(s))
二、否定断言
2.1.前向否定断言
前向否定断言:表示你希望不匹配的字符串前面是pattern匹配的内容时,才匹配。
语法:(?!=pattern)
2.2后向否定断言
后向否定断言:表示你希望匹配的字符串后面不是pattern匹配的内容时,才匹配。
语法:(?!pattern)
2.3否定断言说明
1、跟前向肯定断言一样,前向否定断言括号中的正则表达式必须是能确定长度的正则表达式,比如\w{3},而不能写成\w*或者\w+或者\w?等这种不能确定个数的正则模式符
案例:
1、匹配不包含连续字符串abc的单词。s='abcddd qweabee ddabc abc cba’
import re
s=“abcddd qweabee ddabc abc cba”
result=re.finditer(r"\b((?!abc)\w)+\b",s)
print([i.group() for i in result])