[cheat] 正则表达式

241 阅读1分钟

[cheat] 正则表达式

1. 普通字符

字符匹配描述
.除\n、\r以外的任意字符
英文字母
数字
汉字
符号

2. 转义字符

把普通的字符转义成特殊字符,或把定位符、限定符或其他关键字转义成普通的字符。

字符匹配描述
\加在要转义的字符前,用来转义
\b单词的边界(开始或结束),即字与空格间的位置
Here is a word. -> Here\b \bis\b \ba\b \bword.
\B与\b相反,不匹配单词边界
\d数字
\D与\d相反,非数字
\f换页符
\n换行符
\r回车符
\s空白字符,包括空格、换页符、制表符、垂直制表符
\S与\s相反,非空白字符
\t制表符(Tab)
\v垂直制表符
\w字母、数字、下划线
\W与\w相反

3. 定位符

字符匹配描述
^字符串的开始
$字符串的结束
\b单词的边界(开始或结束),即字与空格间的位置
Here is a word. -> Here\b \bis\b \ba\b \bword.
\B与\b相反,不匹配单词边界

4. 重复限定符

字符匹配描述
*重复任意次
+重复1次或更多次
?重复0次或1次
{n}重复n次
{n,}重复n次或更多次
{n, m}重复>=n,<=m次

5. 条件符

字符匹配描述
|

6. 分组

字符匹配描述
( )小括号来做分组,括号中的内容作为一个整体

7. 集合/区间

字符匹配描述
[ ]中括号来表示集合或区间
[abc],[369]字符集合,匹配所包含的任意一个字符
[^xyz]负值字符集合,匹配不在集合的任意字符,如不匹配x或y或z
[数字/字母-数字/字母]字符范围,匹配指定范围内的任意字符
[a-z] 匹配 'a' 到 'z' 范围内的任意小写字母
[^a-z] 匹配不在 'a' 到 'z' 范围内的任意字符
[a-zA-Z] 匹配所有字母
[0-9] 匹配数字0-9
[a-zA-Z0-9_] = \w
[.] 只会匹配 . 字符

8. 表达式

?=?!?<=?<! 用于限定它前后的表达式,不能单独使用,本身没有作用。

字符匹配描述
?=a(?=b) 匹配后面有 b 的 a
?!a(?!b) 匹配后面没有 b 的 a
?<=(?<=a)b 匹配前面有 a 的 b
?<!(?<!a)b 匹配前面没有 a 的 b

9. 修饰符/标记

/pattern/flags
字符匹配描述
i/aPplE/i 将匹配设置为不区分大小写
g全局匹配,查找输入的所有的匹配项
/like/g
You like apple, and you like banana.
m使边界字符 ^$ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾
s默认情况下的圆点 . 是匹配除 \n、\r 之外的任何字符,加上 s 修饰符之后 . 将也匹配 \n、\r

10. 优先级

正则表达式从左到右进行计算,不同优先级的运算先高后低。

(从最高到最低)
\
( ),(?表达式),[ ]
重复限定符
^,$,\字符,任何字符
|