问号跟在表示重复的元字符(*, +, ?, {n}, {n,}, {n,m}) 后面时,表示进入非贪婪模式,要求匹配的字符串越短越好。例如:(*?) 。
例子:
<message>123</message>
<message>456</message>
<message>abc</message>
如何匹配<message></message>?
如果正则为<message>.*</message>,那么它会进行贪婪匹配:
<message>123</message>
<message>456</message>
<message>abc</message>
显然是不对的。
使用问号解决,修改正则为<message>.*?</message>,使用非贪婪模式,这样结果才正确:
<message>123</message>
<message>456</message>
<message>abc</message>
参考:http://hi.baidu.com/zhumq92/blog/item/1119e70615fff5ca7b89475b.html