此处提供了正则表达式语法的摘要。基本上 正则表达式中的每个字符都表示要匹配的文本, 除了以下具有特殊含义的符号 (所描述的语法与Perl兼容):
^ 匹配字符串的开头
$ 匹配字符串末尾(允许使用尾随换行符)
. 匹配除换行符以外的任何字符
[...] 匹配括号中列出的任何字符文本。
注意:
如果第一个字符是“^”,则匹配任何字符列表中的除外。您可以将“-”字符用作在“[A-Z0-9]”中选择字符范围。其他角色在括号中失去其特殊含义,但“\”除外。
在这些括号内,可以使用以下内容
POSIX 字符类(请注意,附加括号是需要):
[:alnum:] 字母和数字字符
[:alpha:] 字母字符
[:blank:] 空格和制表符
[:cntrl:] 控制字符
[:d igit:] 数字
[:graph:] 非空白(如空格或控制字符)
[:lower:] 小写字母字符
[:p rint:] 类似于 [:graph:],但包含空格
[:p unct:] 标点符号字符
[:空格:] 所有空格字符 ([:blank:], 换行符, ...)
[:upper:] 大写字母字符
[:xdigit:] 允许使用十六进制数字 (0-9a-fA-F) 的数字。
-
允许 0 次或多次重复前面的文字或组
-
允许 1 次或多次重复
? 允许 0 或 1 次重复
{n,m}允许 n 到 m 次重复
{n} 正好允许 n 次重复
注意:
上面的重复量词默认是贪婪的,即它们尝试最大化比赛的长度。附加?尝试找到最小匹配项,例如 +?
| 分隔替代匹配表达式。
( ) 对子图案进行分组并创建捕获组。
此组捕获的子字符串将单独存储。
(?: ) 在不创建捕获组的情况下对子模式进行分组
(?= ) 积极的前瞻(要求条件对比赛)
(?! ) 负面展望(禁止条件对比赛进行)
(?<= ) 正回溯(请求条件留给匹配)
(?<! ) 负面后视(禁止条件留给比赛)
\ 对任何特殊符号进行转义,以将其视为文本。请注意,一些主机语言,如 HDevelop 和 C/C++ 已经使用反斜杠作为一般的逃生角色。在本例中,'\.'匹配文字点 while 匹配文字反斜杠。此外,还有一些特殊代码(大写的表示否定的每个版本):
\d,\D 匹配数字
\w,\W 匹配字母、数字或下划线
\s,\S 匹配空格字符
\b,\B 匹配单词边界'\\'