学习正则表达式,最好分好类,这样才有助于记忆各种符号。
序号 |
符号 |
含义 |
举例 |
1 |
. |
匹配除换行符以外的任意单个字符 |
.b : 匹配 somebody中的eb,匹配 hobby中的ob。 |
2 |
\w |
匹配字母或数字或下划线。等同于[0-9a-zA-Z_] 。如果\w后面不加区间,默认只匹配单个字符。
|
\w :匹配hh12_5a 中的h 。 \w{8,16} :匹配不到hh12_5a 。 \w{8,16} :匹配hh12_5ab 中的hh12_5ab 。\w{8,16} :匹配hh12_5abccd 中的hh12_5abccd 。 \w{8,16} :匹配hh12_5abccccccccd 中的hh12_5abcccccccc ,因为d是第17个,所以不会匹配到 |
3 |
\s |
匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v] 。 |
\s :会依次 匹配到hh 1 2_3 5a 中的空格,一共三个。 |
3 |
\S |
匹配任何可见字符。等价于[^ \f\n\r\t\v] 。 |
\S :会依次 匹配到abc def g 中的a ,b ,c ,d ,e ,f ,g
|
3 |
\t |
匹配一个制表符。等价于 \x09和\cI 。 |
|
4 |
\d |
匹配一个数字.等价于[0-9]
|
\d :会依次匹配到9999 65 24 中的 9 ,9 ,9 ,9 ,6 ,5 ,2 ,4 ,每次只会匹配到一个数字。 \d\d :会匹配连续的两个数字,例如会依次匹配到9999 65 24 中的99 ,99 ,65 ,24 ,每次只会匹配到两个数字。 |
4 |
\D |
匹配一个非数字字符。等价于[^0-9] 。 |
|
4 |
\v |
匹配一个垂直制表符。等价于 \x0b和\cK 。 |
|
4 |
\f |
匹配一个换页符。等价于\x0c和\cL 。 |
|
4 |
\n |
匹配一个换行符。等价于\x0a和\cJ 。 |
|
4 |
\r |
匹配一个回车符。等价于\x0d和\cM 。 |
|
5 |
^ |
匹配字符串中开始位置的字符 |
^c : 匹配 coderZB 中的 c,但不匹配 ZBcoder中的 c。^[0-9] : 匹配字符串开始位置是数字的字符串 |
6 |
$ |
匹配字符串中结束位置的字符 |
B$ : 匹配 coderZB 中的 B,但不匹配 coderZBMan 中的 B。\s$ : 匹配字符串结尾是空格、制表符、换页符等等的字符串 |
7 |
[xyz] |
匹配字符列表中的任意字符,可以通过连字符 - 指定字符范围。 |
[mno] :也可以表示为 [m-o],它匹配 noob 中的 n,匹配 mnemonics 中的 mn 与 mo。 |
8 |
x|y |
匹配 x 或 y |
sky|water 匹配 blue sky 中的sky 和 hot water 中的 water。 |
按重复划分
序号 |
符号 |
含义 |
举例 |
1 |
* |
匹配* 之前的字符 0 次或 +∞次 |
zb* : 依次 匹配 coderzbzbcoder 中的 zb 和zb ,也就是匹配到zb两次。zb* :依次 会匹配zbcoderzcoder中的zb 和z 。 |
2 |
+ |
匹配+ 之前的字符1次或+∞次。 |
c+ : 依次 匹配coderZBccccc 中的c 和 cccccc 。[a-zA-Z]+ :匹配不分大小写字母的英文单词(无限字母) ,所以匹配coderZBccccc 中的coderZBccccc 。[a-zA-Z]+ :匹配coder3ZBccccc 中的coder 和ZBccccc 。 |
3 |
? |
匹配? 之前的字符0次或1次。匹配 ? 字符的话,使用 \?,将?转义一下。
|
le? :匹配excellent 中的l 或者excellent 中的le 。解释:le? 是l加e?的形式。根据定义,e为{0,1},就是0个e和1个e 。最终le? 分为l或者le的情况, 所以当为l的时候,匹配到的是l ,当为le 的时候,匹配到的是le 。 |
4 |
{n} |
n 为正整数,匹配之前的 n 个字符。 |
b{2} : 匹配bbasketball中的bb。不匹配 basketball中的b,因为只有一个b。 |
5 |
{n,} |
重复n次或+∞次 |
b{2,} :匹配 bbasketball 中的 bb 以及 bbbasketball 中的 bbb.不匹配basketball 中的b |
6 |
{n,m} |
重复n到m次 |
b{2,3} : 匹配 basketball 中的任何 b,它匹配 bbasketball 中的 bb 以及 bbbasketball 中的 bbb。但在 bbbbasketball 中,只匹配前 3 个 b。 |
按取反划分
序号 |
符号 |
含义 |
举例 |
1 |
\W |
匹配任意不是字母,数字,下划线,汉字的字符。等价于[^A-Za-z0-9_]
|
|
2 |
\S |
匹配任意不是空白符的字符。等价于[^ \f\n\r\t\v]
|
|
3 |
\D |
匹配任意非数字的字符。 等价于[^0-9]
|
|
4 |
\B |
匹配不是单词开头或结束的位置。 |
|
5 |
[^c] |
匹配除了c以外的任意字符 。 |
|
6 |
[^coderzb] |
匹配除了coderzb这几个字母以外的任意字符。 |
[^acoderzb] :依次匹配jianshucoderz1b 中的j ,i ,n ,s ,h ,u ,1
|
2 |
\W |
匹配任意不是字母,数字,下划线,汉字的字符 |
|