高手给解决一下正则表达式的问题?

高手给解决一下正则表达式的问题?

请问 .*? 与 .+? 有区别么?
我知道.+?是非贪婪的匹配也就是匹配一个任意字符。那.*?是什么意思,什么也不匹配么?
再就是一个我们不是很明白在匹配中的()是做什么用。
()
是用来截获 匹配到的字符
如果第一个()
则得到的是$1
以此类推
建议你还是先好好去看小骆驼。的正则部份
看好后有问题再来问。
我关键是想问.*?和.+?有什么区别
http://bbs.chinaunix.net/thread-1243164-1-1.html
这里面你不是已经问过了.别人也回答你了.
要是找到明确的答案,我就不来这里问了。比如.*?a
   到底匹配什么?
  对于aaaa这个串,是匹配aa呢,还是匹配a。


QUOTE:
原帖由 gjer301 于 2008-8-15 21:46 发表
要是找到明确的答案,我就不来这里问了。比如.*?a
   到底匹配什么?
  对于aaaa这个串,是匹配aa呢,还是匹配a。

那贴已经告诉你答案了,你就是需要个更直白的解释。。。
.*跟.+的区别,前者是匹配0或0个以上的字符,并且是贪婪匹配
                     后者是匹配1或1个以上的字符,并且是贪婪匹配
.*或.+后面加个?,就是把贪婪匹配改成非贪婪匹配,相应的:
                     .*?匹配0或0个以上的字符,优先匹配0个字符
                     .+?匹配1或1个以上的字符,优先匹配1个字符

举个例子,对于字符串   abab ,
.*b 匹配的结果是 abab ,先撇去正则引擎做的优化不说,.*b在进行匹配时,.*先是把“abab”全部吞掉,结果引擎发现.*后面还有个b,这样会导致匹配失败,因此.*把吞掉的"abab"吐出一个"b",这个时候匹配成功,因此整个匹配结束,.*最终匹配的结果是"aba"

.*?b匹配的结果是ab,.*?b在匹配时,.*?先是一个字符都不吞,结果引擎发现b跟"abab"中的第一个"a"不匹配,于是.*?吞进一个字符"a",然后再进行比较,发现这时候匹配成功,于是最终.*?匹配的结果是"a"

.+与.+?的区别类似
好,这个回答好,谢谢哦
终于有答案了。