(?!pattern)、(?<=pattern)和(?<!pattern)
import re str = "23456win56" str_suffix = "23456win56" # 先找到win,匹配到win的后面为56|12的win print(re.search("win(?=56|12)", str)) # 先找到win,匹配到win的后面不为12的win print(re.search("win(?!12)", str)) # 先找到win,匹配前面不为23456的win print(re.search("(?<!23456)win", str_suffix)) # 先找到win,匹配前面为23456的win print(re.search("(?<=23456)win", str_suffix))
(?:pattern)、(?=pattern)
# (?:pattern) 匹配得到的结果包含pattern。 # (?=pattern) 则不包含。 # 对字符串:"industry abc"的匹配结果: # industr(?:y|ies) ---> "industry" # industr(?=y|ies) ---> "industr" # 是否消耗字符 # (?:pattern) 消耗字符,下一字符匹配会从已匹配后的位置开始。 # (?=pattern) 不消耗字符,下一字符匹配会从预查之前的位置开始,只预查,不移动匹配指针。
参考连接
https://www.cnblogs.com/mengff/p/10996501.html
本文来自博客园,作者:topass123,转载请注明原文链接:https://www.cnblogs.com/topass123/p/16745169.html