本网站上的更多内容 |
简介 |
正则表达式快速入门 |
正则表达式教程 |
替换字符串教程 |
应用程序和语言 |
正则表达式示例 |
正则表达式参考 |
替换字符串参考 |
书评 |
可打印 PDF |
关于本网站 |
RSS Feed 和博客 |
一些应用程序支持相对反向引用。这些应用程序使用负数来引用反向引用前面的组。要找到相对反向引用引用的组,请取反向引用的绝对值,并从反向引用开始,从右向左遍历正则表达式,计算出 (命名或未命名) 捕获组的许多左括号。因此,(a)(b)(c)\k<-1> 匹配 abcc,(a)(b)(c)\k<-3> 匹配 abca。如果反向引用在捕获组内,则还需要计算该捕获组的左括号。因此,(a)(b)(c\k<-2>) 匹配 abcb。 (a)(b)(c\k<-1>) 无法匹配或出错,具体取决于应用程序是否允许嵌套反向引用。
嵌套反向引用的语法差异很大。它通常是命名反向引用语法的扩展。JGsoft V2 和 Ruby 1.9 及更高版本支持 \k<-1> 和 \k'-1'。虽然这看起来像 .NET 命名捕获的语法,但 .NET 本身不支持相对反向引用。
Perl 5.10、PCRE 7.0、PHP 5.2.2 和 R 支持 \g{-1} 和 \g-1。
Boost 从 Boost 1.42 开始支持 Perl 语法。Boost 从 Boost 1.47 开始添加 Ruby 语法。为了使问题复杂化,Boost 1.47 允许这些变体相乘。Boost 1.47 及更高版本允许使用 \g 或 \k 以及大括号、尖括号或引号指定相对反向引用。这使得六种变体加上 \g-1,总共七种变体。这使得 Boost 与 Ruby、PCRE、PHP、R 和 JGsoft 发生冲突,后者将 \g 与尖括号或引号和负数视为 相对子例程调用。
| 快速入门 | 教程 | 工具和语言 | 示例 | 参考 | 书评 |
| 简介 | 目录 | 特殊字符 | 不可打印字符 | 正则引擎内部 | 字符类 | 字符类减法 | 字符类交集 | 简写字符类 | 点 | 锚 | 单词边界 | 交替 | 可选项 | 重复 | 分组和捕获 | 反向引用 | 反向引用,第 2 部分 | 命名组 | 相对反向引用 | 分支重置组 | 自由间距和注释 | Unicode | 模式修饰符 | 原子分组 | 占有量词 | 前瞻和后顾 | 前瞻和后顾,第 2 部分 | 将文本保留在匹配之外 | 条件 | 平衡组 | 递归 | 子例程 | 无限递归 | 递归和量词 | 递归和捕获 | 递归和反向引用 | 递归和回溯 | POSIX 方括号表达式 | 零长度匹配 | 继续匹配 |
页面 URL:https://regexper.cn/backrefrel.html
页面最后更新时间:2019 年 11 月 22 日
网站最后更新时间:2024 年 3 月 15 日
版权所有 © 2003-2024 Jan Goyvaerts。保留所有权利。