在“ n”个句号停止后停止捕获

时间:2019-04-29 08:44:44

标签: python regex

我需要正则表达式,它可以捕获到特定单词后的指定句号为止。

考虑以下文字:

  

堆栈溢出

     

这是一个很棒的网站。效果很好。很多人帮助每个人    其他。

     

我喜欢它。

我希望我的正则表达式遇到 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},但无法弄清楚。

1 个答案:

答案 0 :(得分:2)

重复一个与非句点字符匹配的组,后跟一个句点字符。您重复该组的次数将是Stack Overflow之后被匹配​​的期间数。例如:

\bStack Overflow\b(?:[^\.]*\.){2}

将在溢出后匹配2个句子(或仅一个句点)。

https://regex101.com/r/KYoVjE/1