正则表达式:匹配符号
译注:back-reference 网络解释为逆向引用、后向引用, 用于重复搜索前面某个分组匹配的文本.
Non-capturing group 网络解释为非捕获组, 就是输入字符串和捕获组匹配的那一部分将不被保存在内存中
[ ... ]匹配任何字符. 例如: [aeIoU] 匹配任何小写元音字母.
连续设置可以在开始和结束之间使用破折号. 例如: [a-z] 匹配任何小写字符.
设置包含破折号 (-),使用它作为第一个或最后一个字符.
设置包含方括号,使用它作为第一个字符的设置. 例如: [][] 将匹配任意 [ 或 ].
注意:特殊字符在设置内不保留他们的特有含义,有例外: \\,\^,\-,\[ 与 \] ,它们在一个设置内匹配转义符.
[^ ... ]匹配任何不在指定範圍內的任意字符. 例如: [^0-9] 不匹配任何数字. 要匹配 "^" 字符本身,请使用 (\^).
[:class:]在字符的给定类中匹配字符. 有效类是:
alpha (任何字母字符),alnum (任何字母数字字符),lower (任何小写字母),
upper (任何大写字母),digit (任何十进制数字 0-9),xdigit (任何十六进制数字,0-9,A-F,a-f),
space (任何空白字符),blank (只有一个空格或制表符),print (任何可打印字符),
graph (除空格外的任何可打印字符),cntrl (任何控制字符 [ascii 127 或 <32])
punct (任何标点字符). 因此 [0-9] 相当于 [[:digit:]].
[^:class:]在类中除第一个字符外,不匹配任何字符
( ... )组. 组中的元素可按序重复处理. 例如: (ab)+ 将匹配 "ab" 或 "abab",但不匹配 "aba".
组能保存匹配的文本,以便由函数返回的数组后向引用,但需取决于设定的标志值.
(?i)不区分大小写. 该标志对组无效. 它指定正则表达式匹配时不涉及大小写.
(?-i)(默认) 区分大小写. 该标志对分组无效. 它指定正则表达式匹配时区分大小写.
(?i ... )区分大小写的组. 仅工作于正常组,在分组内执行匹配时区分大小写.
(?-i ... )区分大小写的组. 仅工作于正常组,在分组内执行匹配时区分大小写. 主要用于 (-i) 标志之后, 或一个区分大小写的分组内.
(?: ... )非捕获组. 仅工作于正常组,但是不记录数组的匹配字符,被匹配的文本也不会用作后向引用.
(?i: ... )不区分大小写的非捕获组. 仅工作于捕获组,在非捕获组内执行不区分大小写的匹配.
(?-i: ... )区分大小写的非捕获组. 仅工作于非捕获组,在非捕获组内执行区分大小写的匹配.
(?m)^ 与 $ 匹配数据内的换行符.
(?s). 匹配任意字符,包括换行. (默认 "." 不匹配换行)
(?x)忽略空白区域和 # 注释.
(?U)反转贪婪的量词.
.匹配任何的单字符 (除换行以外)..
|或句点" . ",可以匹配|前的字符也可以匹配|之后的字符.
\退出一个特殊字符 (让它匹配实际字符) 或者引用一个特殊字符类型 (见下文)..
\\匹配一个真实的反斜线 (\).
\a报警字符(打印它的效果是电脑嘀一声),即字符 BEL (chr(7)).
\A只匹配字符串的开头.
\b匹配一个单词边界,也就是单词和空格之间的位置. 例如:"er\b" 可以匹配 "never" 中的 "er",但不能匹配 "verb" 中的 "er"
\B匹配非单词边界. 例如: “er\B” 能匹配 “verb” 中的 “er”,但不能匹配 “never” 中的 “er”.
\c匹配一个控制字符,基于下一个字符. 例如:,\cM 匹配 ctrl-M.
\d匹配数字字符, 等价于[0-9].
\D匹配非数字字符, 等价于[^0-9].
\e匹配一个退出符 (chr(27)).
\E结束大小写修改.
\f匹配一个换页符 (chr(12)).
\h匹配一个换行符.
\H任何不是水平的空白字符.
\n匹配换行符 (@LF,chr(10)).
\Q引用 (停用) Metacharacters 模式到 \E 时为止. 译注: Metacharacters = 元字符,指那些可以代表特殊含义的字符
\r匹配一个回车符 (@CR,chr(13)).
\s匹配任何的空白字符: Chr(9) 到 Chr(13).包括:水平制表符,换行,垂直列表符,换页,回车以及标准空格 ( Chr(32) ).
\S匹配任何的非空白的字符.
\t匹配一个制表符 (chr(9)).
\v匹配一个垂直制表符.
\V匹配不是垂直制表符的任何字符.
\w匹配包括下划线的任何单词字符,等价于“[A-Za-z0-9_]”.
\W匹配任何非单词字符, 等价于“[^A-Za-z0-9_]”。.
\###匹配ASCII字符, 其代码是特定的或是后向引用的. 最多只能有 3 个八进制数字.
找到的匹配用于后向引用. 匹配先前的组. 例如: ([:alpha:])\1 将匹配一个双字母.
\x##匹配指定的ascii字符,用字符的的十六进制表示. 只能是 2 个数字. 比如:空格可以使用 "\x20" 表示.
\z只匹配字符串结束.
\Z只匹配字符串结束,或者换行之前.
重复字符
{x}重复前面的字符,精确 x 次数.
{x,}重复前面的字符,至少 x 次数.
{0,x}重复前面的字符,最多 x 次数.
{x,y}重复前面的字符,在 x 与 y 之间的次数,x、y包括在内.
*重复前面的字符,0 或更多次数. 等价于 {0,}
+重复前面的字符,1 或更多次数. 等价于 {1,}
?可能会或可能不会出现的前一字符. 等价于 {0,1}
? (在一个重复字符之后)查找最少的匹配而非最多的
字符类别 [:alnum:]字母和数字 [:alpha:]字母 [:ascii:]字符代码 0 - 127 [:blank:]空格或制表符 [:cntrl:]控制字符 [:digit:]十进制数字 (相同于 \d) [:graph:]可打印字符,排除空格 [:lower:]小写字母 [:print:]可打印字符,包括空格 [:punct:]可打印字符,排除文字和数字 [:space:]空白空间 (不完全和 \s 相同,还包括 VT: chr(11) ) [:upper:]大写字母 [:word:]"字" 字符 (相同于 \w) [:xdigit:]十六进制数
原文链接:https://www.f2er.com/regex/361586.html