北魏为什么打不过刘宋:谁能帮我解释一下正则表达式中贪婪匹配和非贪婪匹配的用法?

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 01:36:25
正则表达式中其它的内容我都懂,就这部分看不明白,请大家帮我解释一下吧,最好举几个例子,谢谢了。

我不知道你说的是java里面的regular expression还是其他的,如果是java的,则不能简单的分为贪婪和非贪婪,应分为Greedy、reluctant和possissive。这里说一下Greedy和possissive的区别。
Greedy匹配就是先进行整个字符串匹配,如果不成功,然后再往前退,然后进行匹配直到匹配成功;而possissive则只对整个字符串匹配一次。Example:
Greedy regular:.*foo
Input String: xfooxxxxxxfoo
可以匹配成功。
Possissive regular: .*+foo
Input String: xfooxxxxxxfoo
则匹配不成功。因为它的匹配是这样进行的,先匹配第一个.对应x,然后匹配*对应fooxxxxxxfoo,而foo就没有办法找到对应的字符串,所以就不能成功了!
更加详细的文档请参考:http://java.sun.com/docs/books/tutorial/extra/regex/quant.html。希望对你有所帮助。