转载:http://www.regexlab.com/zh/deelx/syntax/ext_recs.htm
递归表达式 (?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))*) | (([^()] | (([^()] |
DEELX 支持的递归表达式格式有:
| 格式 | 说明 |
|---|---|
| (?R) | 对整个表达式的递归引用。 |
| (?R1),(?R2) | 对指定分组的递归引用。 |
| (?1),(?2) | 对指定分组的递归引用。 |
| (?R) | 对指定命名分组的递归引用。 |
| (?R’named’) | 对指定命名分组的递归引用。 |
本文详细介绍了正则表达式中的递归引用概念及其应用。递归引用不同于反向引用,它允许表达式内部引用自身,从而实现复杂的匹配逻辑。文章通过多个实例解释了递归表达式的不同形式及其实现效果。

4481

被折叠的 条评论
为什么被折叠?



