正则表达式的模式可以包括以下内容:
-
字面值字符:例如字母、数字、空格等,可以直接匹配它们自身。
-
特殊字符:例如点号 .、星号 *、加号 +、问号 ? 等,它们具有特殊的含义和功能。
-
字符类:用方括号 [ ] 包围的字符集合,用于匹配方括号内的任意一个字符。
-
元字符:例如 \d、\w、\s 等,用于匹配特定类型的字符,如数字、字母、空白字符等。
-
量词:例如 {n}、{n,}、{n,m} 等,用于指定匹配的次数或范围。
-
边界符号:例如 ^、$、\b、\B 等,用于匹配字符串的开头、结尾或单词边界位置。
|
模式
|
描述
|
|
^
|
匹配字符串的开头。
|
|
$
|
匹配字符串的末尾。
|
|
.
|
匹配除了换行符(\n 、\r) 之外任意单个字符。
|
|
[ ]
|
匹配括号内的任意一个字符, 例如,[abc] 匹配字符 "a"、"b" 或 "c"。
|
|
[^ ]
|
匹配除了括号内的字符以外的任意一个字符, 例如,[^abc] 匹配除了字符 "a"、"b" 或 "c" 以外的任意字符。
|
|
*
|
匹配前面的模式零次或多次。
|
|
+
|
匹配前面的模式一次或多次。
|
|
?
|
匹配前面的模式零次或一次。
|
|
{n}
|
匹配前面的模式恰好 n 次。
|
|
{n,}
|
匹配前面的模式至少 n 次。例如,"o{2,}"不能匹配"Bob"中的"o",但能匹配"foooood"中的所有o。"o{1,}"等价于"o+"。"o{0,}"则等价于"o*"。
|
|
{n, m}
|
匹配前面的模式至少 n 次且不超过 m 次。
|
|
a|b
|
匹配a或b, 用于指定多个模式的选择。
|
|
( )
|
匹配括号内的表达式,用于分组和捕获子表达式。
|
|
(?: )
|
与 ( )类似, 用于分组但不捕获子表达式。
|
|
(?= )
|
正向肯定预查,exp1(?=exp2):查找 exp2 前面的 exp1。
|
|
(?<= )
|
反向肯定预查,(?<=exp2)exp1:查找 exp2 后面的 exp1。
|
|
(?! )
|
正向否定预查,exp1(?!exp2):查找后面不是 exp2 的 exp1。
|
|
(?<! )
|
反向否定预查,(?<!exp2)exp1:查找前面不是 exp2 的 exp1。
|
|
\
|
转义字符,用于匹配特殊字符本身。
|
|
\cx
|
匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
|
|
\f
|
匹配一个换页符。等价于 \x0c 和 \cL。
|
|
\n
|
匹配一个换行符。等价于 \x0a 和 \cJ。
|
|
\r
|
匹配一个回车符。等价于 \x0d 和 \cM。
|
|
\t
|
匹配一个制表符。等价于 \x09 和 \cI。
|
|
\v
|
匹配一个垂直制表符。等价于 \x0b 和 \cK。
|
|
\s
|
匹配任意空白字符,包括空格、换行符等,等价于 [ \f\n\r\t\v]。 注意 Unicode 正则表达式会匹配全角空格符。
|
|
\S
|
匹配任意非空字符,等价于 [^\f\n\r\t\v]。
|
|
\w
|
匹配数字字母下划线,等价于'[A-Za-z0-9_]'。
|
|
\W
|
匹配非数字字母下划线,等价于 '[^A-Za-z0-9_]'。
|
|
\d
|
匹配任意数字,等价于 [0-9]
|
|
\D
|
匹配任意非数字,等价于 [^0-9]。
|
|
\A
|
匹配字符串开始
|
|
\z
|
匹配字符串结束
|
|
\Z
|
匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。
|
|
\G
|
匹配最后匹配完成的位置。
|
|
\b
|
匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
|
|
\B
|
匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
|