搜索

2011年1月1日星期六

正则表达式(Perl 风格)中的重复

正则表达式(Perl 风格)中的重复

说是 Perl 风格正则表达式,不过其实因为我只熟悉 PHP 中的那个 PCRE 所以下面的表述都是基于 PHP PCRE 的,不过据说它是 Perl 兼容的。

这两者的具体区别参见 PHP 官方文档

重复在表达式中的标准语法是:

{min,max}

有几个缩写符号:
  • ? = {0,1}
  • * = {0,}
  • + = {1,}
还有匹配模式参数:
  • <quantifier>? 设置“贪婪”模式;加上?等于反转当前设置;
  • (?> ... ) 设置单次匹配模式
还有一个 <quantifier>+ 模式,其实等于“贪婪+单次匹配模式”。

关于贪婪模式:
贪婪
尽可能多吃掉字符,除非破坏了其后的规则;
非贪婪
尽可能少吃掉字符,除非破坏了其后的规则;
关于单次匹配模式:
对于重复规则,只进行一次成功的匹配,无论是否会破坏其后的规则。

单次匹配用于贪婪模式下,后续规则中,没有和重复规则,相重叠的字符的情况下,因为此情况下,重复匹配无意义,这么做可以改善性能。

没有评论:

发表评论