单个字符
[aeiou] 匹配所有的元音(aeiou)字符
[^aeiou] 匹配所有的非元音字符
[a-z] 匹配a~z中所有字符
. 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]
[\s\S] 匹配所有。\s 是匹配所有空白符,包括换行;\S 非空白符,不包括换行
\w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
\d 匹配数字。等价于[0-9]
元字符
\d 匹配数字字符
\D 匹配非数字字符
\w 匹配单词字符(英文、数字、下划线); 等价于[A-Za-z0-9_]
\W 匹配非单词字符
\s 匹配空白符(包括换行符、Tab)
\S 匹配非空白字符
. 匹配任何单个字符,它只能出现在方括号以外, 只有一个不能匹配的字符,也就是换行符(\n)
\b \b标注字符的边界(全字匹配);例如\bword\b匹配单词word
^ 匹配行首
$ 匹配行尾
非打印字符
\f 匹配一个换页符。等价于 \x0c 和 \cL
\n 匹配一个换行符。等价于 \x0a 和 \cJ
\r 匹配一个回车符。等价于 \x0d 和 \cM
\s 匹配任何空白字符
\S 匹配任何非空白字符
\t 匹配一个制表符
\v 匹配一个垂直制表符
限定符
* 匹配前面的子表达式零次或多次。
例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}
+ 匹配前面的子表达式一次或多次。
例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。
+ 等价于 {1,}
? 匹配前面的子表达式零次或一次。
例如,"do(es)?" 可以匹配 "do"、"does" 中的 "does"、"doxy" 中的 "do" 。
? 等价于 {0,1}
{n} n 是一个非负整数。匹配确定的 n 次。
例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配"food" 中的两个 o
{n,} n 是一个非负整数。至少匹配n 次。
例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配"foooood" 中 的所有 o
'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。
'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格
^ $符号
定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界
^ 匹配字符串开头
$ 匹配字符串结尾
e.g. ^bucket$ 匹配单词bucket
^符号,在[]之内和之外是不同的。在[]内表示反向选择,在[]外表示定位在行首。
通用规则
1.正则表达式默认是贪婪模式,即尽可能的匹配更多字符,而要使用非贪婪模式,我们要在表达式后面加上 ?
2.贪婪/懒惰匹配
<.+> 默认贪婪匹配“任意字符”
<.+?> 懒惰匹配“任意字符”
3.或运算符
(a|b) 匹配a或b
(ab)|(cd) 匹配ab或cd
4.匹配字符串中的两个关键词:
^(?=.*word1)(?=.*word2).*$
标签:字符,匹配,正则表达式,等价,单词,字符串,换行符
From: https://www.cnblogs.com/nixinglvzhe/p/16755356.html