我一直在尝试找到匹配项,如果它们存在,它们可能是字符串中的可选单词,需要被忽略。
我尝试的代码是:
import re
str = '''
topping consensus estimates
topping analysis' consensus estimate
topping estimate
'''
for m in re.finditer(r'(?P<p3c>topping\s+(?:\w+\s(?!estimate)){0,2}(estimate))',str):
print(m.group())
print('done')
我希望在字符串中找到所有三个案例,但只能获得最后一个案例。我想在顶部和估计之间跳过最多两个字,但不能保证它们将是分析和共识。我尝试使用(?:\w+\s(?!estimate)){0,2}
跳过最多两个字来获得结果,但由于某种原因它无效。
答案 0 :(得分:4)
你不需要得到&#34;顶部估计&#34;作为结果。您真正想要的是检查每行是以topping
开头,后跟2个或更少的单词,然后是estimate
或estimates
。
这个正则表达式可以帮助你:
^topping(\s\S+){0,2}\sestimates?\s*$
如果您打开m
,则将其与每行匹配,或与多行匹配。它会告诉你字符串是否满足要求。