| 修饰符 | 说明 |
|---|
| i | 不区分大小写 |
| g | 搜索时会寻找所有匹配项,没有它,则仅返回第一个匹配项 |
| m | 多行模式 |
| s | 允许.匹配换行符\n,使得.匹配所有字符 |
| u | 开启完整的unicode编码 |
| y | 在源字符串中的指定位置进行搜索 |
| 字符 | 说明 |
|---|
| \d | 数字,匹配0-9中任意一个 |
| \s | 空格、制表符\t,换行符\n以及其他稀有字符 |
| \w | 下划线_,字母a-zA-Z |
| . | 除了换行符以外任意字符 |
| /./s | 任意字符 |
| \D | 非数字 |
| \S | 除空格以外的其他任何字符 |
| \w | 非单字字符,除了\w以外的任何字符 |
| |转义字符,有些字符具有其他含义,想要这些匹配这些特殊字符时,需要加上转义字符 | |
| 以下这些字符如果想要匹配,需要加上转义字符 | |
| `[ ] { } ( ) \ ^ $ . | ? * +` |
| 边界 | 说明 |
|---|
| ^ | 字符换开始 |
| $ | 字符换结束 |
| ^$ | 以空开头,以空结尾,匹配空字符 |
| /^.$/m | 启动多行匹配,行的开头是 ,行的结尾 |
| \b | 词边界 |
| \bA\b | A是不是一个独立单词 |
| 范围和数量 | 说明 |
|---|
| [...] | 搜索给定范围内的任意一个 |
| [a,e,o] | 匹配a,e,o其中的一个,只有一个 |
| [a-z] | 范围,此处表示26个小写字母a,b,c,...,z |
| [^ ] | 排除范围,匹配除了给定字符以外的任意字符 |
| / | 选择或 |
| {n} | 确定数量n |
| {n,m} | 出现范围在n次-m次之间 |
| {n,} | 出现大于等于n次 |
| + | 一次或一次以上 |
| * | 0次或以上 |
| ? | 0次或一次 |
| 量词? | 量词后面紧跟问号,表示开启这个量词的惰性模式 |
| []号中一般不需要使用转义符号 | |

| 捕获组 | 说明 |
|---|
| () | 将括号内的内容看作一个整体 |
| \1 \2 \N | 第一个括号内容,第二个括号内容,第N个括号内容 |
| (...)? | 可选组 括号后带问号的那个组可以存在也可以不存在,都会匹配上 |
| (?...) | 将该组名字命名为name,在groups中可见 |
| (?:...) | 非捕获组,匹配组的内容,但不出现在结果中 |
| \K | 根据名字反向引用,name组匹配的内容 |
| 位置断言 | 说明 |
|---|
| X(?=Y) | X后面紧跟着Y,匹配X |
| X(?!Y) | X后面不是Y,匹配X |
| (?<=Y)X | X前面是Y,X紧跟着Y,匹配X |
| (?<!Y)X | X前面不是Y,匹配X |
词边界和^$的区别
[]内的转义字符如何使用
非捕获组要怎么理解