regex - 现代正则表达式不是方言方言吗?

标签 regex regular-language

我在这里看到了一些评论,这些评论提到现代正则表达式超出了常规语言可以表示的范围。怎么了

现代正则表达式的哪些特征不是正则?例子会有所帮助。

最佳答案

首先想到的是反向引用:

(\w*)\s\1


(先匹配一组单词字符,后跟一个空格,然后再匹配先前相同的一组字符),例如:hello hello匹配,hello world不匹配。

此构造不是常规的(即:不能由regular grammar生成)。



Perl兼容RegExp(PCRE)支持的另一个非常规功能是递归模式:

\((a*|(?R))*\)


可用于匹配平衡括号和“ a”的任意组合(来自wikipedia

关于regex - 现代正则表达式不是方言方言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828115/

相关文章:

regular-language - 常规语言的抽动引理

javascript - 使用正则表达式检测 img src 中的反斜杠

regex - 从正则语言派生正则表达式

javascript - 想要 1 美元的舞会正则表达式和 prag match

python - 正则表达式 : (. *)、(.*?) 和 .*

javascript - RexExp 传递变量

ruby - 如何使用正则表达式转换 Markdown 样式的链接?

regex - 在 Perl 的匹配运算符中插入变量时,如何转义元字符?

javascript - 正则表达式 : Split line by ","

R 检测口音