考虑以下案文:
foo:·····¶
·bar x··¶
·lorem ipsum····¶
dolorsitamet···¶
···¶
consectetur adipiscing elit:中间点表示空格,¶表示换行符。
regex (?:foo:\s*)(.+)(?:\n\s*)匹配空格行上的三个空格,但regex (?:foo:\s*)(.+)(?:\n\s+)匹配到dolorsitamet后面的换行符,但不包括换行符。为什么*角色不贪婪?人们会期望第三组(?:\n\s*)匹配。
¶
···¶`我的regex模式是多行的,多特。
发布于 2016-07-24 06:52:10
发布于 2016-07-24 06:46:24
它确实有贪婪的行为。但是,为了在末尾匹配\n\s+,需要匹配换行符和至少一个空格字符。在这种情况下,这是下一个到最后一个换行符,三个空格,最后一个换行符。
如果它不停止,.+将捕获更多,但最后一部分将不匹配,regex引擎将寻找一个不那么贪婪的解决方案,这就是它所发现的。
https://stackoverflow.com/questions/38549421
复制相似问题