快速入门
教程
工具和语言
示例
参考
书籍评论
正则表达式参考
简介
目录
快速参考
字符
基本功能
字符类
速记
锚点
词边界
量词
Unicode
捕获组和反向引用
命名组和反向引用
特殊组
模式修饰符
递归和平衡组
替换参考
字符
匹配文本和反向引用
上下文和大小写转换
条件
本网站更多内容
简介
正则表达式快速入门
正则表达式教程
替换字符串教程
应用程序和语言
正则表达式示例
正则表达式参考
替换字符串参考
书籍评论
可打印 PDF
关于本网站
RSS 源和博客
RegexBuddy—Better than a regular expression reference!

正则表达式参考:捕获组和反向引用

功能语法说明示例JGsoft .NET Java Perl PCRE PCRE2 PHP Delphi R JavaScript VBScript XRegExp Python Ruby std::regex Boost Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE Oracle XML XPath
捕获组 (regex) 括号将括号之间的正则表达式分组。它们将括号内正则表达式匹配的文本捕获到一个编号组中,该组可以使用编号反向引用重复使用。它们允许你将正则表达式运算符应用于整个分组正则表达式。 (abc){3} 匹配 abcabcabc。第一个组匹配 abc ECMA
扩展
egrep
awk
ECMA
扩展
egrep
awk
捕获组 \(regex\) 转义括号对括号之间的正则表达式进行分组。它们捕获括号内正则表达式匹配的文本到一个编号组中,该组可以使用编号反向引用进行重用。它们允许你对整个分组正则表达式应用正则表达式运算符。 \(abc\){3} 匹配 abcabcabc。第一个组匹配 abc 基本
grep
基本
grep
非捕获组 (?:regex) 非捕获括号对正则表达式进行分组,以便你可以应用正则表达式运算符,但不会捕获任何内容。 (?:abc){3} 匹配 abcabcabc。没有组。 ECMAECMA
反向引用 \1\9 用第 1 到第 9 个编号捕获组之间匹配的文本替换。 (abc|def)=\1 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc ECMA
基本
grep
ECMA
基本
grep
反向引用 \10\99 用第 10 到第 99 个编号捕获组之间匹配的文本替换。 ECMA
反向引用 \k<1>\k<99> 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 (abc|def)=\k<1> 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 1.9ECMA
1.47–1.83
反向引用 \k'1'\k'99' 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 (abc|def)=\k'1' 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 1.9ECMA
1.47–1.83
反向引用 \g1\g99 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 (abc|def)=\g1 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 5.107.05.2.2ECMA
1.42–1.83
反向引用 \g{1}\g{99} 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 (abc|def)=\g{1} 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 5.107.05.2.2ECMA
1.42–1.83
反向引用 \g<1>\g<99> 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 (abc|def)=\g<1> 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc ECMA
1.47–1.83
反向引用 \g'1'\g'99' 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 (abc|def)=\g'1' 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc ECMA
1.47–1.83
反向引用 (?P=1)(?P=99) 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 (abc|def)=(?P=1) 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc
相对反向引用 \k<-1>\k<-2> 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 (a)(b)(c)(d)\k<-3> 匹配 abcdb V21.9ECMA
1.47–1.83
相对反向引用 \k'-1'\k'-2' 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 (a)(b)(c)(d)\k'-3' 匹配 abcdb V21.9ECMA
1.47–1.83
相对反向引用 \g-1\g-2 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 (a)(b)(c)(d)\g-3 匹配 abcdb 5.107.05.2.2ECMA
1.42–1.83
相对反向引用 \g{-1}\g{-2} 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 (a)(b)(c)(d)\g{-3} 匹配 abcdb 5.107.05.2.2ECMA
1.42–1.83
相对反向引用 \g<-1>\g<-2> 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 (a)(b)(c)(d)\g<-3> 匹配 abcdb ECMA
1.47–1.83
相对反向引用 \g'-1'\g'-2' 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 (a)(b)(c)(d)\g'-3' 匹配 abcdb ECMA
1.47–1.83
反向引用失败 任何编号反向引用 未参与匹配尝试的分组的反向引用匹配失败。 (a)?\1 匹配 aa,但无法匹配 b 非 ECMA忽略忽略忽略ECMA
基本
grep
忽略
ECMA
1.47–1.83
不适用不适用忽略
无效反向引用 任何编号反向引用 对根本不存在的分组的反向引用有效,但无法匹配任何内容。 (a)?\2|baab 中匹配 b 错误错误错误错误错误错误错误错误错误错误错误错误仅限 1.8ECMA
基本
grep
错误
ECMA
基本
grep
错误
错误错误不适用错误错误错误不适用错误
嵌套反向引用 任何编号反向引用 反向引用可以在其引用的分组内使用。 (a\1?){3} 匹配 aaaaaa 忽略忽略错误失败ECMA
基本
grep
错误
ECMA
1.78–1.83 失败
错误错误不适用错误错误错误不适用错误
前向引用 任何编号反向引用 反向引用可以在其引用的分组之前使用。 (\2?(a)){3} 匹配 aaaaaa 非 ECMA忽略错误错误错误ECMA
基本
grep
错误
ECMA
1.78–1.83
错误错误不适用错误错误错误不适用错误
功能语法说明示例JGsoft .NET Java Perl PCRE PCRE2 PHP Delphi R JavaScript VBScript XRegExp Python Ruby std::regex Boost Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE Oracle XML XPath