正则表达式笔记
1.字符
1.1 元字符
| 元字符 | 含义 |
|---|---|
| \d | 数字,等同于[0-9] |
| \D | 非数字字符,等同于[^0-9] |
| \w | 字母、数字、下划线 |
| \W | 字母、数字、下划线以外的字符 |
| \s | 空白字符,就是"空格符"、"\t"、"\n"、"\r" |
| \S | 非空白字符,就是\s相反的字符 |
| . | 匹配任意字符,换行符除外 |
1.2 字符范围
[0-9] 表示从数字0到数字9
[A-Z] 表示从大写字母A到大写字母Z
注意
[A-z] 不表示所有的字母,因为大写字母Z到小写a之间还间隔几个字符,详情可以查看ASCII表。
2.限定符
| 字符 | 含义 |
|---|---|
| ? | 含有零个或者一个匹配字符 |
| + | 含有一个或者一个以上匹配字符 |
| * | 含有任意数量匹配字符 |
| 准确包含2个匹配字符 | |
| 包含2个或者更多的匹配字符 | |
| 包含2个以上、5个以下的匹配字符(包括2和5边界) | |
| ab|cd | 选其中一个匹配。匹配ab或者匹配cd |
3. 边界符
| 字符 | 含义 |
|---|---|
| ^ | 一行的开头 |
| $ | 一行的结束 |
| \b | 一个词的边界,注意匹配的是一个词的边界,而不是词之间的空格符 |
| \B | 刚好\b相反,不是一个词的边界 |
4. 分组
| 字符 | 含义 |
|---|---|
| (abc) | 将匹配到的"abc"字符串作为一个分组,可以在后面使用\1输出,例子: (\w+)\b \1,然后字符串"abc abc" 就匹配了,注意两个abc之间有空格符,正则表达式"\b \1"之间也有空格符。 |
| \1 | 表示前面匹配的第一个分组的值,如果是第二个分组,那么就是\2 |
| (?:abc) | 不捕获分组 |
| (?=abc) | 肯定式向前查找。例如:我们要查找a后面必须是b的匹配,那么,我们的匹配模式是"a(?=b)",字符串“ab”就是匹配项。注意匹配模式"(?=states)state",只有字符串"states"才匹配,匹配部分是"state"。 |
| (?!abc) | 否定式向前查找 |
| (?<=abc) | 肯定式向后查找,和向前查找的方向相反。 |
| (?<!abc) | 否定式向后查找,和向前查找的方向相反。 |
5. 贪婪模式与非贪婪模式
| 字符 | 含义 |
|---|---|
| ?? | 含有零个或者一个匹配字符(非贪婪模式) |
| +? | 一个或一个以上(非贪婪模式) |
| *? | 任意数量匹配(非贪婪模式) |
贪婪模式:简单来讲,就是尽可能多的匹配。系统默认就是贪婪模式。
例子:
贪婪模式
匹配模式: ba{2,5}
测试字符串: baaaaa
匹配字符: baaaaa
非贪婪模式
匹配模式: ba{2,5}
测试字符串: baaaaa
匹配字符: baa
参考文档
查询表
引自:http://www.cbs.dtu.dk/courses/27610/regular-expressions-cheat-sheet-v2.pdf


浙公网安备 33010602011771号