快速入门
教程
工具和语言
示例
参考
书评
正则表达式参考
引言
目录
快速参考
字符
基本功能
字符类
速记
锚点
单词边界
限定符
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
命名捕获组 (?<name>regex) 将与“regex”匹配的文本捕获到组“name”中。该名称可以包含字母和数字,但必须以字母开头。 (?<x>abc){3} 匹配 abcabcabc。组 x 匹配 abc 75.107.05.2.21.9ECMA
1.42–1.83
命名捕获组 (?'name'regex) 将与“regex”匹配的文本捕获到组“name”中。该名称可以包含字母和数字,但必须以字母开头。 (?'x'abc){3} 匹配 abcabcabc。组 x 匹配 abc 5.107.05.2.21.9ECMA
1.42–1.83
命名捕获组 (?P<name>regex) 将与“regex”匹配的文本捕获到组“name”中。该名称可以包含字母和数字,但必须以字母开头。 (?P<x>abc){3} 匹配 abcabcabc。组 x 匹配 abc 5.10
重复命名组 任何命名组 两个命名组可以共享相同的名称。 (?<x>a)|(?<x>b) 匹配 ab 7 个错误5.106.7 选项选项5.2.0 选项选项选项错误不适用错误错误1.9不适用ECMA
1.42–1.83
不适用不适用不适用不适用不适用不适用不适用不适用
重复命名组 任何命名组 共享相同名称的命名组被视为同一组,因此在使用反向引用时不会出现陷阱。 不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用
重复命名组 任何命名组 如果正则表达式有多个具有相同名称的组,则使用该名称的反向引用指向正则表达式中具有该名称的最左边的组。 不适用6.7–8.335.2.0–5.5.9XE–XE62.14.0–3.0.2不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用
重复命名组 任何命名组 如果正则表达式有多个具有相同名称的组,则使用该名称的反向引用指向具有该名称的最左边的组,该组在评估反向引用时实际参与了匹配尝试。 不适用5.108.365.6.910.23.1.3不适用不适用不适用不适用不适用ECMA
1.47–1.83
不适用不适用不适用不适用不适用不适用不适用不适用
重复命名组 任何命名组 如果正则表达式有多个具有相同名称的组,则使用该名称的反向引用指向正则表达式中出现在反向引用左边的具有该名称的最右边的组。 不适用不适用不适用不适用不适用不适用ECMA
1.42–1.46
不适用不适用不适用不适用不适用不适用不适用不适用
重复命名组 任何命名组 如果正则表达式有多个具有相同名称的组,则使用该名称的反向引用可以匹配正则表达式中出现在反向引用左边的具有该名称的任何组捕获的文本。 不适用不适用不适用不适用不适用1.9不适用不适用不适用不适用不适用不适用不适用不适用不适用
命名反向引用 \k<name> 用命名组“name”匹配的文本替换。 (?<x>abc|def)=\k<x> 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 75.107.05.2.21.9ECMA
1.47–1.83
命名反向引用 \k'name' 用命名组“name”匹配的文本替换。 (?'x'abc|def)=\k'x' 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 5.107.05.2.21.9ECMA
1.47–1.83
命名反向引用 \k{name} 用命名组“name”匹配的文本替换。 (?'x'abc|def)=\k{x} 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 5.107.25.2.4ECMA
1.47–1.83
命名反向引用 \g{name} 用命名组“name”匹配的文本替换。 (?'x'abc|def)=\g{x} 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 5.107.25.2.4ECMA
1.42–1.83
命名反向引用 (?P=name) 用命名组“name”匹配的文本替换。 (?P<x>abc|def)=(?P=x) 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 5.10
失败的反向引用 任何已命名的反向引用 对未参与匹配尝试的组的反向引用匹配失败。 (?<x>a)?\k<x> 匹配 aa,但无法匹配 b 非 ECMA75.10已忽略不适用已忽略1.9不适用ECMA
1.47–1.83
不适用不适用不适用不适用不适用不适用不适用不适用
嵌套反向引用 任何已命名的反向引用 反向引用可在它们引用的组内使用。 (?<x>a\k<x>?){3} 匹配 aaaaaa 75.106.55.1.3已忽略不适用已忽略2.4–3.4 失败1.9 失败不适用ECMA
1.78–1.83 失败
不适用不适用不适用不适用不适用不适用不适用不适用
前向引用 任何已命名的反向引用 反向引用可在它们引用的组之前使用。 (\k<x>?(?<x>a)){3} 匹配 aaaaaa 7 个错误5.106.75.2.0已忽略不适用错误错误1.9 错误不适用ECMA
1.42–1.83 错误
不适用不适用不适用不适用不适用不适用不适用不适用
命名捕获组 任何已命名的捕获组 数字是捕获组的有效名称。 (?<17>abc){3} 匹配 abcabcabc。名为“17”的组匹配 abc 7 个错误5.10 错误4.0–8.33错误5.0.0–5.1.2XE–XE62.14.0–3.0.2错误不适用错误错误1.9 错误不适用ECMA
1.42–1.83
不适用不适用不适用不适用不适用不适用不适用不适用
命名捕获组 任何名称为数字的捕获组 如果组的名称是数字,则该数字将成为组的名称和组的编号。 (?<17>abc|def)=\17 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用
命名反向引用 任何已命名的反向引用 一个数字是一个反向引用的有效名称,该反向引用指向一个名称为该数字的组。 (?<17>abc|def)=\k<17> 匹配 abc=abcdef=def,但不匹配 abc=defdef=abc 不适用不适用4.0–8.33不适用5.0.0–5.1.2XE–XE62.14.0–3.0.2不适用不适用不适用不适用不适用不适用ECMA
1.42–1.83 错误
不适用不适用不适用不适用不适用不适用不适用不适用
命名捕获组 任何已命名的捕获组 一个负数是一个捕获组的有效名称。 (?<-17>abc){3} 匹配 abcabcabc。名为“-17”的组匹配 abc 错误错误7 个错误5.10 错误错误错误错误错误错误错误不适用错误错误1.9 错误不适用ECMA
1.42–1.83
不适用不适用不适用不适用不适用不适用不适用不适用
命名反向引用 任何已命名的反向引用 一个负数是一个反向引用的有效名称,该反向引用指向一个名称为该负数的组。 不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用不适用ECMA
1.42–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