正则表达式笔记
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