我一直在寻找匹配项,它们可能是字符串中的可选词,如果它们存在,则需要忽略它们。
我尝试的代码是:
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}
跳过两个单词来得到结果,但由于某种原因,它不起作用。 最佳答案
你不需要得到“最高估计”作为结果。您真正想要的是检查每一行是否以topping
开头,后跟2个或更少的单词,然后是estimate
还是estimates
。
此正则表达式将帮助您:
^topping(\s\S+){0,2}\sestimates?\s*$
将其与每一行或多行匹配(如果启用
m
)。它将告诉您字符串是否满足要求。关于python - python regex跳过可选单词不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47936681/