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

posted on 2022-09-30 15:49  topass123  阅读(280)  评论(0编辑  收藏  举报