字符(total)
表示一个具体的字符。
示例:a
、b
、c
等。
元字符.
匹配任意单个字符,除了换行符。
示例:a.
会匹配字符串"abc"
中的"ab"
。
元字符[]
匹配括号内的任意一个字符。
示例:[abc]
会匹配字符串"abc"
中的任意一个字母。
元字符[^]
匹配除括号内的字符以外的任意一个字符。
示例:[^abc]
会匹配除了"a"、"b"、"c"
之外的任何一个字符。
元字符*
匹配前面的字符出现0次或多次。
示例:a*
会匹配字符串"aaa"
中的所有"a"
。
元字符+
匹配前面的字符出现1次或多次。
示例:a+
会匹配字符串"aaa"
中的所有"a"
,但不会匹配字符串"abc"
。
元字符?
匹配前面的字符出现0次或1次。
示例:a?
会匹配字符串"a
"和""
(空字符串)。
元字符{}
匹配前面的字符出现指定的次数。
示例:a{3}
会匹配字符串"aaa"
,但不会匹配字符串"aa"
或"aaaa"
。
元字符|
匹配前面或后面的字符。
示例:a|b
会匹配字符串"a"
或"b"
。
元字符()
用来分组,可以将一系列字符视为一个整体来匹配。
示例:(abc)+
会匹配字符串"abcabc"
,但不会匹配字符串"abcbca"
。
元字符^
匹配字符串的开头。
示例:^abc
会匹配以"abc"
开头的字符串。
元字符$
匹配字符串的结尾。
示例:abc$
会匹配以"abc"
结尾的字符串。
元字符\
转义字符,可以用来匹配特殊字符本身。
示例:\
. 会匹配字符串"."
中的.
。
元字符\d
匹配数字,相当于[0-9]。
示例:\d+
会匹配字符串"123"
中的所有数字。
元字符\w
匹配字母、数字和下划线,相当于[A-Za-z0-9_]。
示例:\w+
会匹配字符串"abc_123"
中的所有字符。
元字符\s
匹配空白字符,包括空格、制表符、换行符等。
示例:\s+
会匹配字符串" abc\t\n"
中的所有空白字符。
元字符\b
匹配单词边界,即字与空格之间的位置。
示例:\bcat\b
会匹配字符串"a cat is a cat"
中的两个"cat"
,但不会匹配字符串"scatter"
中的"cat"
。
元字符\B
匹配非单词边界,即两个字之间的位置。
示例:\Bcat\B
会匹配字符串"scatter"
中的"cat"
,但不会匹配字符串"a cat is a cat"
中的两个"cat"
。
元字符*?、+?、??、{n,m}?
这些是非贪婪版本的量词元字符,表示尽可能少地匹配符合条件的字符。
示例:a*?b
会匹配字符串"aaab"
中的"aab"
,而不是整个字符串。
元字符(?=)、(?!)
零宽度正预测先行断言和负预测先行断言,用于匹配某些位置前面或者不在某些位置前面的内容。
示例:a(?=b)
会匹配字符串"acb"
中的"a"
,但不会匹配字符串"acc"
中的"a"
。
元字符(?:)
非捕获型分组,不会被提取出来作为单独的匹配项。
示例:(?:abc)+ 会匹配字符串"abcabc"
,但不会将每个"abc"
分别匹配出来。
元字符\1、\2
等
反向引用匹配前面已经匹配过的分组。
示例:([0-9])-\1
会匹配字符串"4-4"
,但不会匹配字符串"4-5
"。
元字符^、$
表示字符串的开头和结尾。
示例:^abc$
会匹配仅包含"abc"
的字符串,但不会匹配包含其他字符的字符串。
元字符()
分组元字符,在括号中的子模式匹配完成后,将匹配结果作为一个整体返回。
示例:(abc)+
会匹配字符串"abcabc"
,但只会将两个"abc"
作为一个匹配项返回。
元字符(?:)
非捕获型分组元字符,匹配括号内的子模式,但不会将匹配结果作为单独的匹配项返回。
示例:(?:abc)+
会匹配字符串"abcabc"
,但不会将每个"abc"
分别匹配出来。
元字符(?i)、(?s)、(?m)
用于设置匹配模式,分别表示忽略大小写、包含换行符、多行匹配。
示例:(?i)abc
会匹配字符串"ABC"
或"Abc"
等,不区分大小写。
元字符\1、\2
等
反向引用元字符,用于引用前面已经匹配到的分组。
示例:([0-9])-\1
会匹配字符串"4-4"
,但不会匹配字符串"4-5
"。
元字符(?(condition)yes-pattern|no-pattern)
条件匹配元字符,用于根据指定的条件选择匹配哪个模式。
示例:a(?(?=b)b|c)
会匹配字符串"ab
"或"ac"
,根据"a"
后面是否接着"b"
来选择匹配哪个模式。
元字符(?<name>pattern)、\k<name>
命名分组元字符和反向引用分组名字。
示例:(?<mygroup>[0-9]+)\k<mygroup>
会匹配字符串"123123"
,因为前后两个"123"
是同一个命名分组的匹配结果。
元字符(?#comment)
注释元字符,用于在正则表达式中添加注释。
示例:a(?#this is a comment)b
会匹配字符串"ab"
,但"(?#this is a comment)"
不会参与匹配。
元字符(?i:pattern)
嵌入式选项,可以在某个子模式中设置匹配选项。
示例:(?i:abc) 等价于A|B|C
元字符(?<=...)、(?<!...)
零宽度正回顾后发断言和负回顾后发断言,用于匹配某些位置后面或者不在某些位置后面的内容。
示例:(?<=a)b
会匹配字符串"ab"
中的"b"
,而不会匹配字符串"cb"
中的"b"
。
元字符\A、\Z
匹配字符串的开头和结尾,与^和$的区别是不会受换行符的影响。
示例:\Aabc\Z
只会匹配以"abc"
组成的整个字符串,而不会匹配包含换行符的字符串。