简单的转译字符
符号 |
含义 |
\n |
代表换行符 |
\t |
代表制表符 |
\\ |
代表\本身 |
\^,\$,\(,\),\{,\},\?,\+,\*,|,\[,\] |
匹配这些符号本身 |
标准字符集合
能够与 多种字符 匹配的表达式
注意区分大小写,大写是相反的意思
符号 |
含义 |
\d |
任意一个数字,0~9中的任意一个 |
\D |
非数字 |
\w |
任意一个字母数字或下划线,A-Z,a-z,0~9,_ |
\W |
除了字母数字下划线的任意字符 |
\s |
包括空格、制表符、换行符等空白字符的其中任意一个 |
\S |
除了空格、制表符、换行符之外的任意字符 |
. |
小数点可以匹配任意一个字符,但是匹配不了换行符,如果要匹配包含\n在内的所有字符,一般用 [\s\S]
|
自定义字符集合
[]方括号匹配方式:能够匹配方括号中的任意一个字符
表达式 |
匹配字符 |
[[email protected]] |
匹配 a 或者b或者@或者5 |
^ab] |
匹配除了 a,b之外的任意字符 |
[f-k] |
匹配 f到k之间的任意一个字符,包括 f 和 k |
[^A-F0-3] |
匹配除了A ~ F,0 ~ 3 之外的任意字符 |
- 在 [ ] 中 ^ 表示取反对的意思。
- 正则表达式的特殊符号,被包含到中括号中,就是去了特殊意义,除了 ^ 和 - 之外。
- 标准字符集合,除了小数点在中括号中会失去特殊意义,其他的不会。 [\dab],匹配数字或者a,b
量词
修饰匹配次数的特殊符号
表达式 |
含义 |
{n} |
表达式重复n次 ,包括 n |
{m,n} |
表达式至少重复m次,至多重复n次 ,包括 m 和 n |
{m,} |
表达式至少重复m次 ,包括 m |
? |
匹配表达式0次或1次,相当于{0,1} |
+ |
表达式至少出现一次,相当于{1,} |
* |
表达式不出现或者出现任意次,相当于{0,} |
- 贪婪模式:匹配字符越多越好,默认。例如下图中如果写成c{2,6},就是会匹配到一个cccccc。
- 非贪婪模式:就是在量词后面加一个 ?号。还是下图,写成c{2,6}?,就会匹配到3个cc
如果连续的6个c,使用表达式c{2,3},会匹配到2个ccc,这是因为匹配到第一个ccc的时间会重新计数。
字符边界
符号 |
含义 |
^ |
以什么开始 |
$ |
以什么结束 |
\b |
左右边界不全是 \w ,即左右不全是字母,数字,下划线 |
正则的匹配模式
- 忽略大小写模式
- 单行模式:整个文本看做一个字符串,只有一个开头,一个结尾。
- 多行模式:每行都是一个字符串,都有开头和结尾。
选择符或分组
表达式 |
作用 |
| |
左右表达式之间 或 关系,匹配左边,或者右边 |
() |
捕获组 1.在被修饰匹配次数的时间,括号中的表达式可以作为整体被修饰。2.取匹配结果的时间,括号中的表达式匹配到的 内容可以单独得到 |
反向引用:每一对()会分配一个编号,使用()的捕获根据左括号从1开始自动编号。
通过反向引用,可以对分组已捕获的字符串进行引用,如下图:小括号中的表达式表示匹配两个字母,后面的\1表示对()中内容的引用,即()中匹配到go,\1再次引用go,这时候这个正则需要的就是 gogo
断言
- 只进行子表达式的匹配,匹配内容不计入匹配结果
- 这个位置应该符合某个条件
表达式 |
含义 |
(?=exp) |
断言自身出现的位置 后面可以 匹配到表达式exp |
(?<=exp) |
断言自身出现的位置 前面可以 匹配到表达式exp |
(?!exp) |
断言自身出现的位置 后面不可以 匹配到表达式exp |
(?<!exp) |
断言自身出现的位置 前面不可以 匹配到表达式exp |
例如:断言自己后面可以匹配到ing的字符