高级正则表达式:无法找出可以使用 (?R) 递归正则表达式的情况

高级正则表达式:无法找出可以使用 (?R) 递归正则表达式的情况

(?R)这里有人可以解释递归 Perl/PCRE 正则表达式有帮助的情况吗?

我读

但仍然找不到用例。

答案1

典型的例子是匹配一个包含数字、运算符和括号中的子表达式的算术表达式:

([0-9]+|\((?R)\))([-+*\/]([0-9]+|\((?R)\)))*
 ^^^^^^ ^^^^^^^^  ^^^^^^^ ^^^^^^ ^^^^^^^^
 number (subexp)   oper   number (subexp)
\______  _______/        \______  _______/
       \/                       \/
  One of those             One of those
                  \__________  ____________/
                             \/
                     Zero or more of those

也就是说,匹配

  • 括号中的数字或子表达式,后跟
  • 零次或多次运算符以及括号中的数字或子表达式。

答案2

这是用于匹配嵌套结构(如嵌套括号)的工具。
数学定义的正则表达式无法与此匹配。

\(  ( [^()]*+ | (?R) )*  \)

在线查看(应忽略空格)。

请阅读:

相关内容