扩展语法 - 递归表达式

DEELX

DEELX 正则表达式扩展语法:递归表达式

回到:目录 | 上一页:条件表达式 | 下一页:匹配模式


递归表达式 (?R)

对另一部分子表达式的引用,而不是对其匹配结果的引用。当被引用的表达式包含自身,则形成递归引用。


说明

相对于 "反向引用" 来说,反向引用是在匹配过程中,对匹配到的字符串内容进行引用,而 "递归匹配" 是对表达式进行引用。举例说明:

表达式

等效的表达式1

等效的表达式2

可以匹配

(\w)(?1)

(\w)(\w)

 

ab

(?1)(\w(?2))(\d)

(?1)(\w(\d))(\d)

(\w(\d))(\w(\d))(\d)

a1b23

如果被引用的表达式又包含自身,则形成了递归引用。举例说明:

表达式

等效1

等效2

可以匹配

(\w(?1)?)

(\w(\w(?1)?)?)

(\w+)

ghjk5……

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

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

 

(a * (c + 2))

DEELX 支持的递归表达式格式有:

格式

说明

(?R)

对整个表达式的递归引用。

(?R1)(?R2)

对指定分组的递归引用。

(?1)(?2)

(?R<named>)

对指定命名分组的递归引用。

(?R'named')

 

regexlab.com © 2005 - 2006