假如正则表达式如下:
a(.+?)123
其中 .+?,有个 ?,就表示是非贪婪匹配,测试的字符串是:abcabc123abc123,如果是贪婪匹配,它将匹配整个字符串,而现在是非贪婪匹配,它只匹配到第一个 123。如下(蓝色为整个正则表达式匹配部分,红色为括号匹配部分):
贪婪匹配:abcabc123abc123
非贪婪匹:abcabc123abc123(后面的 abc123 也会匹配上,但这里不讨论)
可以看出,正则表达式的非贪婪匹配只是不向右多匹配,而左边一旦匹配上并不向右边收缩,因为,它无法实现下面的匹配:
期望匹配:abcabc123abc123