字符性质 | 符号 | 含义 | 举例 |
一般字符(匹配自身) | .(点) | 匹配除换行符之外的任意一个字符,DOTALL模式中可以匹配换行符 | a.c可以匹配abc |
\(反斜杠) | 转义一个特殊的字符,使这个字符表示原来字面上的意思。如"\$",表示原字符$,而不是正则表达式中表示匹配行尾的意思。 | a\.c匹配a.c | |
预定义字符集 (可以写在[]中) | [...] 方括号 | 匹配括号中出现的任意单个字符 | a[123]b匹配a1b、a2b、a3b、a12b等 |
[^...] | 不匹配方括号中列出的单个字符(注意只能针对单个字符) | [^ab]匹配除a和b之外的字符 | |
\d | 匹配中任意一个数字,范围为[0-9] | a\dc可以匹配a1c、a2c等 | |
\D | 匹配任意一个非数字字符,等价于[^\d] | 1\D2可匹配1a2 | |
\s | 匹配任意一个空白字符:[<空格>\t\r\n\v\f] | a\sf匹配a f | |
\S | 匹配任意一个非空白字符,等价于[^\s] | a\Sg匹配agg等 | |
\w | 匹配一个字母或数字,字符范围:[A-Za-z0-9] | 1\wt可以匹配1at等 | |
\W | 非单词字符,等价于[^\w] | a\Wb可以匹配a@b等 | |
数量字符集(用在字符或分组符(...)之后,非贪婪匹配*? +?) | *(星号) | 匹配前一个字符0次1次或多次 | abc*可以匹配ab、abc、abcc等 |
+(加号) | 匹配前一个字符1次或多次 | cde+可匹配cde、cde等 | |
?(问号) | 匹配前一个字符0次或1次 | fgh?匹配结果fg、fgh | |
{m} | 匹配前一个字符m次 | qc{3}匹配结果qccc | |
{m,n} | 匹配前一个字符m到n次 | 1{2,5}ac匹配结果11ac、111ac、1111ac、11111ac | |
{m,}匹配前一个字符至少m次 | |||
{,n}匹配前一个字符0到n次,最多n次 | |||
边界匹配符 | ^(托字符) | 匹配字符串开头,如果是多行则匹配每一行的开头。在[...]中,^表示否定,如非字母[^a-zA-Z],非数字[^0-9] | ^123匹配123 |
a[^0-9]b可匹配aab等 | |||
$(美元符) | 匹配字符串或一行的结尾,如果是多行则匹配每一行的结尾 | abc$匹配abc | |
\A | 匹配字符串开始,如果存在换行,将字符当作一个整体 | \A12AC匹配12AC | |
\b | 匹配单词的边界,一个\w和\W间的范围,顺序可逆 | \bst匹配a test中的'st',但不匹配'tester'中的''st | |
\B | [^\b],表示匹配非单词边界 | \Bst可以匹配'tester'而不能匹配'test' | |
\Z | 匹配字符串结束,如果存在换行,将字符当作一个整体 | abt\Z匹配abt | |
逻辑匹配符 | |(或) | |或匹配符,表达左右正则表达式任意匹配一个。如果左边的表达式匹配上了,匹配结束,不再匹配右边的表达式。该符号一般放在()中使用,如果没在圆括号中则它的范围是整个正则表达式。 | (12|34)匹配12或34 |
分组字符 | () | 后向引用。用()括起来的正则表达式将被作为一个分组,从正则表达式的左边依次算起,有多少个左括号'(',就有多少个分组,分组的编码从1依次加1,无论是括号中嵌套括号。并且分组表达式作为一个整体,后可接数量词。 | (xyz){2}满足xyzxyz |
x(12|34)y匹配x12y或x34y |