正则表达式
正则表通常被用来检索、替换那些符合某个模式(规则)的文本
组成
边界符
边界符 | 说明 |
---|---|
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾的文本(以谁结束) |
( ) | 标记一个子表达式的开始和结束位置 |
1、 ()
/([1-9])([a-z])/g
匹配 1a2b
-> 1a 2b
圆括号会有一个副作用,使相关的匹配会被缓存,此时可用 ?: 放在第一个选项前来消除这种副作用
- exp1(?=exp2):查找 exp2 前面的 exp1
- (?<=exp2)exp1:查找 exp2 后面的 exp1
- exp1(?!exp2):查找后面不是 exp2 的 exp1
- (?
字符类
[]方括号
一系列字符可供选择,只要匹配其中一个就可以了
- [ABC] 被匹配字符串中所有的 A B C 字母
- [^ABC] 除了A B C 字母的其他字符
- [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母
量词符
量词 | 说明 |
---|---|
* | 重复0次或更多次, 要匹配 * 字符,使用 * |
+ | 重复1次或更多次, 要匹配 + 字符,使用 + |
? | 重复0次或1次, 要匹配 ? 字符,使用 ? |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
特殊字符
特殊字符 | 说明 |
---|---|
` | ` |
修饰符
- i ignore - 不区分大小写
- g global - 全局匹配
- m multi line - 多行匹配,使边界字符 ^ 和 $ 匹配每一行的开头和结尾
- s 特殊字符圆点 . 中包含换行符 \n
预定义类
预定类 | 说明 |
---|---|
\cx | 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符 |
\f | 匹配一个换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
\d | 匹配0-9之间的任一数字, 相当于[0-9] |
\D | 匹配所有0-9以外的字符,相当于[^0-9] |
\w | 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_ ] |
\W | 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_ ] |
\s | 匹配空格(包括换行符、制表符、空格符等),相等 于[ \tlr\n\v\f] |
\S | 匹配非空格的字符,相当于[^ \tlr\n\v\f] |
\b | 匹配一个单词边界,即字与空格间的位置 |
\B | 非单词边界匹配 |
运算符的优先级
从高到低:
- \
- `(), (?:), (?=), []`
- ^, $, \任何元字符、任何字符
- |