r = r'(?!.*66)get.*on'
txt = "get your kicks on Route 66"
res = re.search(r, txt)
如果排除文本" 66"我只想要res =无将包括在结果文本中,即" get" " on"。在这种情况下,它在结果文本之外,所以我希望看到结果,而是检查是否" 66"在整个文本中的任何位置并返回res = None。有没有办法做我想做的事情?
答案 0 :(得分:1)
要匹配除第三个字符串之外的两个字符串之间的字符串,您可以使用tempered greedy token(请参阅more details about this construct at rexegg.com):
r = r'get(?:(?!66).)*on'
txt = "get your kicks on Route 66"
res = re.search(r, txt)
这里,(?:(?!66).)*
匹配任何char(如果未指定re.DOTALL
,则为换行符除外),0或更多次重复/连续出现,不会启动66
char序列
请参阅regex demo。
请注意,您可能希望使用r'get(?:(?!get|66).)*?on'
表达式调整它以获取最短的子字符串。