正则表达式(2)匹配规则
正则表达式的匹配规则定义了如何识别字符串中的特定模式。这些规则包括字符类匹配、元字符匹配、数量词、字符转义和分组。
字符类匹配
字符类匹配允许你指定一个字符集合,并匹配该集合中的任意单个字符。这是通过方括号 []
来实现的。
-
简单字符类:
[abc]
匹配 "a"、"b" 或 "c" 中的任意一个字符。 -
范围字符类:
[a-z]
匹配任意小写字母,[0-9]
匹配任意数字。 -
否定字符类:
[^abc]
匹配除了 "a"、"b"、"c" 之外的任意字符。 -
多字符集合:
[abc123]
匹配 "a"、"b"、"c"、"1"、"2" 或 "3" 中的任意一个字符。
元字符匹配
元字符是正则表达式中具有特殊含义的字符,用于指定复杂的匹配模式。
-
.
(点):匹配除换行符以外的任意单个字符。 -
^
:匹配输入字符串的开始位置。 -
$
:匹配输入字符串的结束位置。 -
*
:匹配前面的字符零次或多次。 -
+
:匹配前面的字符一次或多次。 -
?
:匹配前面的字符零次或一次。 -
|
:逻辑或操作符,匹配两个表达式中的任意一个。
数量词
数量词指定一个字符或字符组出现的次数。
-
n*
:匹配前面的字符零次或多次(n 为任意正整数)。 -
n+
:匹配前面的字符一次或多次(n 为任意正整数)。 -
n?
:匹配前面的字符零次或一次(n 为任意正整数)。 -
n{m}
:匹配前面的字符恰好 m 次(m 为任意正整数)。 -
n{m,}
:匹配前面的字符至少 m 次。 -
n{m,n}
:匹配前面的字符至少 m 次,最多 n 次。
字符转义
在正则表达式中,一些字符具有特殊含义。如果你想要匹配这些特殊字符本身,需要使用反斜杠 \
进行转义。
-
\d
:匹配一个数字字符(等同于[0-9]
)。 -
\s
:匹配任何空白字符(包括空格、制表符、换页符等)。 -
\w
:匹配任何字母数字字符(等同于[a-zA-Z0-9_]
)。 -
\n
:匹配换行符。 -
\.
:匹配点字符(.
)。
分组
分组允许你将多个字符视为一个整体进行匹配和操作。
-
捕获组:
(...)
将括号内的内容视为一个整体进行匹配,并且可以被后续引用。 -
非捕获组:
(?:...)
将括号内的内容视为一个整体进行匹配,但不捕获匹配的内容。 -
选择组:
(a|b)
匹配 "a" 或 "b"。 -
反向引用:
\1
引用第一个捕获组匹配的内容。