我需要正则表达式,它可以捕获到特定单词后的指定句号为止。
考虑以下文字:
堆栈溢出
这是一个很棒的网站。效果很好。很多人帮助每个人 其他。
我喜欢它。
我希望我的正则表达式遇到 2/3/4 (根据我在不同情况下的需要)在 Stack Overflow (堆栈溢出)一词之后停止捕获。
我的正则表达式捕获了尽可能多的内容:
p = r'((\bStack Overflow\b)\s*.*(?=\.))'
lst = re.findall(p, text, re.I|re.M|re.DOTALL)
如果我将其设置为非贪婪,并使用如下所示的正则表达式。它在第一个句点停止。
p = r'((\bStack Overflow\b)\s*.*?(?=\.))'
我知道我必须在某个地方使用{2}
,但无法弄清楚。
答案 0 :(得分:2)
重复一个与非句点字符匹配的组,后跟一个句点字符。您重复该组的次数将是Stack Overflow
之后被匹配的期间数。例如:
\bStack Overflow\b(?:[^\.]*\.){2}
将在溢出后匹配2个句子(或仅一个句点)。