Dav*_*one 18 regex regular-language
我在这里看到一些评论,提到现代正则表达式超出了常规语言的表达范围.这是怎么回事?
现代正则表达式的哪些特征不规则?例子会有所帮助.
Nul*_*ion 19
首先想到的是反向引用:
(\w*)\s\1
Run Code Online (Sandbox Code Playgroud)
(匹配一组单词字符,后跟空格字符,然后匹配先前匹配的相同组)例如:hello hello匹配,hello world不匹配.
此构造不是常规的(即:不能通过常规语法生成).
Perl兼容RegExp(PCRE)支持的另一个非常规功能是递归模式:
\((a*|(?R))*\)
Run Code Online (Sandbox Code Playgroud)
这可用于匹配平衡括号和"a"的任意组合(来自维基百科)