我在这里看到了一些评论,这些评论提到现代正则表达式超出了常规语言可以表示的范围。怎么了
现代正则表达式的哪些特征不是正则?例子会有所帮助。
最佳答案
首先想到的是反向引用:
(\w*)\s\1
(先匹配一组单词字符,后跟一个空格,然后再匹配先前相同的一组字符),例如:
hello hello
匹配,hello world
不匹配。此构造不是常规的(即:不能由regular grammar生成)。
Perl兼容RegExp(PCRE)支持的另一个非常规功能是递归模式:
\((a*|(?R))*\)
可用于匹配平衡括号和“ a”的任意组合(来自wikipedia)
关于regex - 现代正则表达式不是方言方言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828115/