|
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') |
|
|
|