Python regexp,如何匹配句子

2024-04-25 06:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文


我试图在以下字符串中匹配“句子二foo”和“句子四foo”:

sentence one foo sentence two foo   sentence three foo    sentence four foo   sentence five

请注意,每个句子可以包含多个空格,但不能包含连续的空格 每句话与前句和后句之间至少用两个连续的空格隔开

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

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

注意两句话后面的双空格。
问题是,正如你所知,由于匹配引擎的贪婪性,它将匹配到第四句末尾的双空格。因此,我的第一个匹配项group(1)将超出我的需要,而我的第二个匹配项group(2)将为空。我需要的是group(1)中的“句子二foo”和group(2)中的“句子四foo”

我读过关于非贪婪操作员的帖子“?”但是我在将它应用于双空间时遇到了问题(顺便说一句,它不一定是双空间,也可以是3,4,等等)

我试过:

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

服用group(1)group(3),但似乎没有任何区别…
非常感谢您的帮助。

谢谢
/安德里亚


Tags: 字符串引擎foo模式group空间onesentence
1条回答
网友
1楼 · 发布于 2024-04-25 06:19:45

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

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

(因为您希望在遇到双空格之前匹配尽可能短的文本量)

相关问题 更多 >