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

正则表达式参考

本网站上的正则表达式参考既可用作所有可用 regex 语法的参考,也可作为对 教程 中讨论的正则表达式风格所支持的功能的比较。 参考表 包含了大量的信息。为了充分利用它们,请按照此图例学习如何阅读它们。

这些表针对每个正则表达式功能有六列。前四列解释了该功能。

功能该功能的名称,它还用作教程中相关部分的链接。
语法此功能的实际 regex 语法。如果语法是固定的,则简单地显示为该语法。如果语法有可变元素,则描述该语法。
描述该功能的作用的摘要。
示例演示该功能的功能性正则表达式。

最后两列指示您选择的两种正则表达式风格是否支持此特定功能。您可以使用表上方的下拉列表更改风格。有许多可能的指示符。

此风格的所有版本都支持此功能。
3.0此风格的 3.0 版及所有更高版本都支持此功能。早期版本不支持它。
仅 2.0仅版本 2.0 支持此功能。早期和更高版本不支持它。
2.0–2.9仅版本 2.0 到 2.9 支持此功能。早期和更高版本不支持它。
Unicode此功能在该风格的所有版本中都适用于 Unicode 字符。
代码页此功能适用于此版本的所有版本中的活动代码页中的字符。
ASCII此功能仅适用于此版本的所有版本中的 ASCII 字符。
3.0 Unicode此功能适用于此版本的 3.0 及更高版本中的 Unicode 字符。早期版本根本不支持此功能。
3.0 Unicode
2.0 ASCII
此功能适用于此版本的 3.0 及更高版本中的 Unicode 字符。它适用于 2.0 至 2.9 版本中的 ASCII 字符。早期版本根本不支持此功能。
3.0 Unicode
2.0 代码页
此功能适用于此版本的 3.0 及更高版本中的 Unicode 字符。它适用于 2.0 至 2.9 版本中的活动代码页中的字符。早期版本根本不支持此功能。
字符串regex 版本不支持此语法。但此 regex 版本通常与之一起使用的编程语言中的字符串文字支持此语法。
3.0
1.0 字符串
此 regex 版本的 3.0 及更高版本支持此语法。regex 版本的早期版本不支持此语法。但此 regex 版本通常与之一起使用的编程语言中的字符串文字自 1.0 版本以来就支持此语法。
选项如果您设置特定选项或在前面加上特定 模式修饰符,此 regex 版本的所有版本都支持此功能。
选项
3.0
如果您设置特定选项或在前面加上特定 模式修饰符,此 regex 版本的 3.0 及所有更高版本都支持此功能。早期版本要么根本不支持该语法,要么不支持模式修饰符将语法的行为更改为该功能所描述的内容。
3.0
2.0 失败
此 regex 版本的 3.0 及所有更高版本都支持此功能。3.0 之前的 2.0 所有更高版本都识别该语法,但始终无法匹配此 regex 令牌。2.0 之前的版本不支持该语法。
此种风格的任何版本均不支持此功能。未给出此语法实际执行的操作的任何指示。相同的语法可能用于参考表中其他地方指示的不同功能。或者,语法可能触发错误,或者可能被解释为纯文本。
不适用此功能不适用于此正则表达式风格。描述参考表中较早引入的特定语法行为的功能对于根本不支持该语法的风格显示为不适用。
失败此风格识别语法,并且使用它的正则表达式有效,但此特定正则表达式标记始终无法匹配。仅当通过交替或量词使此标记变为可选时,正则表达式才能找到匹配项。
2.0–2.9 失败2.0 至 2.9 版本识别语法,但始终无法匹配此正则表达式标记。早期和晚期版本不识别语法或将其视为语法错误。
忽略此风格识别语法,但它不执行任何有用的操作。此特定正则表达式标记始终找到零长度匹配项。
错误此风格识别语法,但将其视为语法错误。

当此图例显示“所有版本”或“无版本”时,表示参考表涵盖的每个风格的所有或无版本

JGsoftV1:EditPad 6 和 7;PowerGREP 3 和 4;AceText 3
V2:EditPad 8;PowerGREP 5;AceText 4
.NET1.0–1.1:原始 .NET 框架的前 2 个版本
2.0–7.0:.NET Framework 2.0–4.8、.NET Core 1.0.0–3.1.0 和 .NET 5.0–7.0
1.0–7.0:.NET Framework 和 .NET Core 的所有版本
Java4–21
Perl5.8–5.32
PCRE4.0–8.45
PCRE210.00–10.39
PHP5.0.0–8.1.24
DelphiXE–XE8 和 10–10.4 和 11;仅 TRegEx;也适用于 C++Builder XE–XE8 和 10–10.4 和 11
R2.14.0–4.2.1
JavaScriptChrome、Edge 和 Firefox 的最新版本
VBScript怪癖模式下的 VBscript 和 Internet Explorer
XRegExp2.0.0–5.1.0
Python2.4–3.12
Ruby1.8–3.2
std::regexVisual C++ 2008–2022(Dinkumware std 库)
boost::regex1.38–1.39 & 1.42–1.83
Tcl ARE8.4–8.6
POSIX BREIEEE Std 1003.1
POSIX EREIEEE Std 1003.1
GNU BRE
GNU ERE
Oracle10gR1、10gR2、11gR1、11gR2、12c
XML1.0–1.1
XPath2.0–3.1

对于 .NET 风格,某些功能用“ECMA”或“非 ECMA”表示。这意味着仅当设置 RegexOptions.ECMAScript 时或未设置时才支持该功能。当设置 RegexOptions.ECMAScript 时,用“非 ECMA Unicode”表示的功能匹配 ASCII 字符,而当未设置 RegexOptions.ECMAScript 时,则匹配 Unicode 字符。适用于 .NET 2.0 或更高版本的所有内容也适用于任何版本的 .NET Core。从 VS 2012 开始,Visual Studio IDE 使用非 ECMA .NET 风格。

对于 std::regexboost::regex 风格,有附加指示符 ECMA、basic、extended、grep、egrep 和 awk。当出现其中一个或多个指示符时,这意味着仅当在编译正则表达式时指定其中一种语法时才支持该功能。在宽字符字符串上使用 std::wregex 或 boost::wregex 时,带有 Unicode 指示符的功能匹配 Unicode 字符。在替换字符串引用中,附加指示符为 sed 和 default。当出现其中一个指示符时,仅当将 match_flag_type::format_sed 传递给 regex_replace() 或不传递时才支持该功能。对于 boost,还有一个附加替换指示符“all”,表示仅当将 match_flag_type::format_all 传递给 regex_replace() 时才支持该功能。

对于 PCRE2 风格,某些替换字符串功能用“extended”表示。这意味着仅当将 PCRE2_SUBSTITUTE_EXTENDED 传递给 pcre2_substitute 时才支持该功能。