我在这里看到一些意见,提到现代正则表达式超出了常规语言可以表达的内容。这是怎么回事
现代正则表达式的哪些特征不是常规的?例子将是有帮助的。
首先要注意的是反向引用:
(\w*)\s\1
(匹配一组字符,后跟一个空格字符,然后与之前匹配的相同组)例如:hello hello matches,hello world does not。
这个构造不是规则的(即:不能由regular grammar生成)。
Perl兼容RegExp(PCRE)支持的另一个不常规的功能是递归模式:
\((a*|(?R))*\)
这可以用于匹配平衡括号和“a”的任何组合(从wikipedia)