正则表达式参考 |
简介 |
目录 |
快速参考 |
字符 |
基本功能 |
字符类 |
速记 |
锚点 |
词边界 |
量词 |
Unicode |
捕获组和反向引用 |
命名组和反向引用 |
特殊组 |
模式修饰符 |
递归和平衡组 |
替换参考 |
字符 |
匹配文本和反向引用 |
上下文和大小写转换 |
条件 |
本网站更多内容 |
简介 |
正则表达式快速入门 |
正则表达式教程 |
替换字符串教程 |
应用程序和语言 |
正则表达式示例 |
正则表达式参考 |
替换字符串参考 |
书籍评论 |
可打印 PDF |
关于本网站 |
RSS 源和博客 |
功能 | 语法 | 说明 | 示例 | 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。没有组。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | ECMA | ECMA | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 是 |
反向引用 | \1 到 \9 | 用第 1 到第 9 个编号捕获组之间匹配的文本替换。 | (abc|def)=\1 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | ECMA 基本 grep | ECMA 基本 grep | 是 | 是 | 否 | 是 | 是 | 是 | 否 | 是 |
反向引用 | \10 到 \99 | 用第 10 到第 99 个编号捕获组之间匹配的文本替换。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | ECMA | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | |
反向引用 | \k<1> 到 \k<99> | 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 | (abc|def)=\k<1> 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | 否 | 1.9 | 否 | ECMA 1.47–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
反向引用 | \k'1' 到 \k'99' | 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 | (abc|def)=\k'1' 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 1.9 | 否 | ECMA 1.47–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
反向引用 | \g1 到 \g99 | 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 | (abc|def)=\g1 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 否 | 否 | 否 | 5.10 | 7.0 | 是 | 5.2.2 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA 1.42–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
反向引用 | \g{1} 到 \g{99} | 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 | (abc|def)=\g{1} 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 否 | 否 | 否 | 5.10 | 7.0 | 是 | 5.2.2 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA 1.42–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
反向引用 | \g<1> 到 \g<99> | 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 | (abc|def)=\g<1> 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA 1.47–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
反向引用 | \g'1' 到 \g'99' | 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 | (abc|def)=\g'1' 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA 1.47–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
反向引用 | (?P=1) 到 (?P=99) | 用第 1 到第 99 个编号捕获组之间匹配的文本替换。 | (abc|def)=(?P=1) 匹配 abc=abc 或 def=def,但不匹配 abc=def 或 def=abc。 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
相对反向引用 | \k<-1>、\k<-2> 等 | 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 | (a)(b)(c)(d)\k<-3> 匹配 abcdb。 | V2 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 1.9 | 否 | ECMA 1.47–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
相对反向引用 | \k'-1'、\k'-2' 等 | 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 | (a)(b)(c)(d)\k'-3' 匹配 abcdb。 | V2 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 1.9 | 否 | ECMA 1.47–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
相对反向引用 | \g-1、\g-2 等 | 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 | (a)(b)(c)(d)\g-3 匹配 abcdb。 | 否 | 否 | 否 | 5.10 | 7.0 | 是 | 5.2.2 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA 1.42–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
相对反向引用 | \g{-1}、\g{-2} 等 | 用指定组的匹配文本替换,该组可通过从右至左从反向引用开始,按指定编号计算命名或编号捕获组的左括号数量来找到。 | (a)(b)(c)(d)\g{-3} 匹配 abcdb。 | 否 | 否 | 否 | 5.10 | 7.0 | 是 | 5.2.2 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA 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|b 在 aab 中匹配 b。 | 错误 | 错误 | 是 | 错误 | 错误 | 错误 | 错误 | 错误 | 错误 | 错误 | 错误 | 错误 | 错误 | 仅限 1.8 | ECMA 基本 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 |