日期:2014-05-17  浏览次数:20937 次

非贪婪匹配原理?
1、 (?<d>demo.*?)*
匹配:demoAAAdemoAAAdemoAAAdemoAAA

得到:
demo
demo
demo
demo

2、(?<d>demo[^d]+)*
匹配:demoAAAdemoAAAdemoAAAdemoAAA
得到:
demoAAA
demoAAA
demoAAA
demoAAA
结论:第2种是我要的结果,第一种是非贪婪来匹配的,先匹配到demo后,.*?表示可以不匹配字符,但使表达式完整而匹配尽量少的字符。明显如果匹配了demoAAA然后对这个组做*无限的重复,这样匹配的表达式就更完整了,就表明非贪婪匹配,应该是尽可能使表达式匹配完整而得到demoAAA然后重复组,为什么这里它做了尽量少的匹配,虽然非贪婪就是做尽量少匹配,但应该是匹配表达式更完整的前提下做尽量少吧? 匹配demoAAA怎么都比demo来的完整吧。

望大家指明一下非贪婪匹配的原理? 是不是我理解有问题,它就是做尽量少的匹配,而不做匹配完整性的作用

------解决方案--------------------
非贪婪匹配就是 满足模式的最小匹配!只要满足了模式中的描述就不再匹配了。
------解决方案--------------------
参考
------解决方案--------------------
探讨
参考