正则表达式匹配次-占有模式

作者:vkvi 来源:ITPOW(原创) 日期:2008-11-18

占有模式在某些特定的语言(比如 JAVA)中才有效,并且很少用,所以不必投入太多的关注。

{m, n}+ 表达式尽可能重复 n 次,至少重复 m 次。

{m, }+ 表达式尽可能的多匹配,至少重复 m 次。

?+ 表达式尽可能匹配 1 次,也可以不匹配,相当于 {0, 1}+。

++ 表达式尽可能的多匹配,至少匹配 1 次,相当于 {1, }+。

*+ 表达式尽可能的多匹配,最少可以不匹配,相当于 {0, }+。

可以看出占有模式似乎和贪婪模式很相像,但还是有区别的:

用正则表达式匹配字符串的时候会产生很多中间状态,(一般的匹配引擎会保存这种中间状态,)这样匹配失败的时候就能原路返回了。占有型的表达式不保存这种中间状态,因此也就不会回头重来了。它能防止正则表达式的失控,同时也能提高运行的效率。

相关文章