[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. 优先级
正则表达式从左到右进行计算,不同优先级的运算先高后低。
| (从最高到最低) |
|---|
| \ |
| ( ),(?表达式),[ ] |
| 重复限定符 |
| ^,$,\字符,任何字符 |
| | |