正则表达式笔记

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

参考文档

https://regexone.com/

https://regexr.com/

查询表

引自:http://www.cbs.dtu.dk/courses/27610/regular-expressions-cheat-sheet-v2.pdf

posted @ 2018-06-01 17:15  cloes  阅读(32)  评论(0编辑  收藏  举报