正则表达式的非贪婪匹配是指向右不贪婪

作者:vkvi 来源:ITPOW(原创) 日期:2020-2-8

假如正则表达式如下:

a(.+?)123

其中 .+?,有个 ?,就表示是非贪婪匹配,测试的字符串是:abcabc123abc123,如果是贪婪匹配,它将匹配整个字符串,而现在是非贪婪匹配,它只匹配到第一个 123。如下(蓝色为整个正则表达式匹配部分,红色为括号匹配部分):

贪婪匹配:abcabc123abc123

非贪婪匹:abcabc123abc123(后面的 abc123 也会匹配上,但这里不讨论)

可以看出,正则表达式的非贪婪匹配只是不向右多匹配,而左边一旦匹配上并不向右边收缩,因为,它无法实现下面的匹配:

期望匹配:abcabc123abc123

相关文章