1. 标准字符集
表达式 | 匹配内容 |
---|
\n | 换行符 |
\t | 制表符 |
\ | \本身 |
\d | 数字 |
\w | 字母、数字、下划线 |
\s | 空格、制表符、换行符等空白字符 |
\S | 非空白字符 |
. | 非换行符 |
\x | 当x不是特殊字符时,匹配x自身。详细点这里 |
2. 自定义字符集
表达式 | 匹配内容 | 备注 |
---|
[abc] | 'a','b','c'中的一个 | |
[^abc] | 除了'a','b','c'的字符 | ^在中括号第一位表示取反,不在第一位表示^自身;^不在中括号表示以什么开头 |
[a-z] | 小写字母 | |
[0-9] | 数字 | |
[a-z0-9] | 小写字母和数字 | |
[\d] | 数字 | 标准字符集放到中括号里也有效,小数点除外 |
[.] | .本身 | 小数点放到中括号仅能匹配小数点自身 |
3. 量词
表达式 | 匹配内容 | 备注 |
---|
a{2} | 连续两个'a' | {x}表示数量x个 |
\d{6} | 连续6个数字 | |
\d{2,3} | 连续2个或3个数字 | {x,y}表示最少x个,最多y个。默认是贪婪模式,匹配得越多越好,即越接近y越好 |
\d{3,} | 最少连续3个数字 | |
\d? | 0个或1个数字 | 等价于\d{0,1} |
\d+ | 最少连续1个数字 | 等价于\d{1,} |
\d* | 连续任意个数字 | 等价于\d{0,} |
4. 边界字符,这类符号用于表示位置
符号 | 解释 | 例子 |
---|
^ | 以什么开始 | ^a,以a开头 |
$ | 以什么结束 | a$,以a结束 |
\b | 单词边界,边界的左边和右边不能都是\w | abc\b,可以匹配"abc "中的"abc",因为'c'后面是空格;但不能匹配"abc123"中的"abc",因为'c'后面是数字 |
5. 捕获组
使用括号进行分组后,再用\n进行引用;n是从1开始的数字,表示组号,若不想给分组分配组号可以使用(?:)。例子如下图所示:
[a-z]{3}表示连续3个字母,把它放进括号就对其进行了分组,\1就可以引用它,类似于申请了一个变量\1,其内容是连续3个字母。所以该表达式就是匹配两组相同的连续3个字母。
若有多个分组,则用\1\2等(注:组号是按照左括号的出现顺序来分配的)来引用,如下图所示:

6. 预搜索
表达式 | 文本 | 匹配结果 | 解释 |
---|
abc(?=123) | abc123 | abc | (?=)表示后面应该出现什么,所以能匹配到"abc123"中的"abc" |
abc(?!123) | abc123 | 无 | (?!)表示后面不应该出现什么,所以不能匹配到"abc123"中的"abc",但是可以匹配"abc222"中的"abc" |
(?<=123)abc | 123abc | abc | (?<=)表示前面应该出现什么,所以能匹配到"123abc"中的"abc" |
(?<!123)abc | 123abc | 无 | (?<!)表示前面不应该出现什么,所以不能匹配到"123abc"中的"abc",但是可以匹配"222abc"中的"abc" |
7. 例子
8. 相关链接