学习正则表达式,最好分好类,这样才有助于记忆各种符号。
| 序号 | 符号 | 含义 | 举例 |
|---|---|---|---|
| 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 |
匹配任意不是字母,数字,下划线,汉字的字符 |