Python正则表达式,如何匹配句子

时间:2014-03-26 10:19:26

标签: python regex


我想在以下字符串中匹配“句子两个foo ”和句子四个foo “:

  句子一句foo句两句foo句三句foo句四句f五句

请注意,每个句子可以包含多个空格,但从不连续空格 通过至少 2个连续的空格

将每个句子与前一个和后一个句子分开

我使用以下模式进行匹配:

.*(sentence two.*  ).*(sentence four.*  )

请注意两句话后的双倍空格 如你所知,问题是由于匹配引擎的贪婪,它将匹配句子四末尾的双倍空格。所以我的第一场比赛group(1)将比我想要的更多,我的第二场比赛group(2)将为空。我需要的是group(1)中的“句子twofoo”和group(2)中的“句子4 foo”

我已阅读有关非贪婪运营商的帖子“?”但我在将它应用于双重空间时遇到了问题(顺便说一下,它不一定是双重的,也可能是三个,四个等)。

我试过了:

.*(sentence two.*)(  )?.*(sentence four.*)(  )?

并采用group(1)group(3),但似乎没有任何区别......
非常感谢任何帮助。

感谢
/安德烈

1 个答案:

答案 0 :(得分:1)

非贪婪的算子应该应用于抓取句子的部分,而不是双重空格:

/(sentence two.*?)  .*(sentence four.*?)/

(因为你想在遇到双倍空格之前匹配尽可能短的文本量)