我试图在以下字符串中匹配“句子二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)
,但似乎没有任何区别…
非常感谢您的帮助。
谢谢
/安德里亚
非贪婪运算符应应用于抓取句子的部分,而不是双空格:
(因为您希望在遇到双空格之前匹配尽可能短的文本量)
相关问题 更多 >
编程相关推荐