正则表达式

正则表达式是用字符串描述的一个匹配规则,使用正则表达式可以快速判断给定的字符串是否符合匹配规则。
常见匹配规则
正则表达式 | 含义 | 备注 |
---|---|---|
\ | 转义字符 | 常用于转义 \ 、( 、[ 、{ 等 |
^ | 匹配字符串开头(第一个字符之前) | |
$ | 匹配字符串结尾(最后一个字符之后) | ^A\d{3}$ 可匹配 A001 、A380 |
. | 除 \n 、\r 之外的任意单个字符 | 注意 [.] 只会匹配 . 字符,等价于 \. |
A | 指定字符 A | |
\u548c | 指定 Unicode 字符 | \u548c 可匹配 和 |
\b | 匹配一个单词边界,即字与空格间的位置 | 作用类似于 ^ 、$ ,注意 \bCha 和 Cha\b 的区别 |
\B | \b 的反义,即非单词边界匹配 | |
\d | 数字 0~9 | 相当于 [0-9] |
\D | \d 的反义,即非数字 | 相当于 [^0-9] |
\w | 大小写字母,数字和下划线 | 相当于 [A-Za-z0-9_] |
\W | \w 的反义 | |
\s | 匹配空白字符,如空格、制表符等 | 相当于 [ \t\v\r\n\f] |
\S | \s 的反义,即非空白符 | |
* | 任意个数 | A* 可匹配 、A 、AA 、AAA 、… |
+ | 至少一个 | A+ 可匹配 A 、AA 、… |
? | 0 或 1 个(也用于 非贪婪匹配 ) | A? 可匹配 、A |
{3} | 指定个数,此处指定为 3 个 | A{3} 可匹配 AAA |
{2,3} | 指定个数范围 | A{2,3} 可匹配 AA 、AAA |
{2,} | 至少个数,此处为至少 2 个 | A{2,} 可匹配 AA 、AAA 、AAAA 、… |
{0,2} | 至多个数,此处为至多 2 个 | A{0,2} 可匹配 、A 、AA |
X|Y | 匹配 X 或 Y | (z|f)ood 可匹配 zood 和 food |
[ABC] | 匹配 [...] 内的任意单个字符 | [ABC] 可匹配 A 、B 、C |
[^ABC] | 匹配除指定字符之外的任意单个字符 | [^ABC] 可匹配 D 、1 、_ |
[A-C1-3X] | 匹配指定范围内的单个字符 | [A-C1-3XY] 可匹配 A 、B 、C 、1 、2 、3 、X |
[^A-C] | 匹配指定范围之外的任意单个字符 | [^A-C] 可匹配 D 、1 、_ 、… |
ex1(?=ex2) | 查找 ex1 ,但后面是 ex2 | |
ex1(?!ex2) | 查找 ex1 ,但后面不是 ex2 | |
(?<=ex2)ex1 | 查找 ex1 ,但前面是 ex2 | |
(?<!ex2)ex1 | 查找 ex1 ,但前面不是 ex2 |
- 可使用
(...)
将子规则括起来- 定位符(如
^
、$
、/b
、/B
)不能与限定符(?
、*
、+
、{2,4}
等)一起使用
正则表达式默认使用贪婪匹配:任何一个规则,它总是尽可能多地向后匹配。*
和 +
限定符都是贪婪的,它们会尽可能多的匹配文字,在它们的后面加上一个 ?
可以实现非贪婪或最小匹配。
修饰符
带有修饰符的正则表达式格式:/pattern/flags
修饰符 flags | 含义 | 备注 |
---|---|---|
i | 不区分大小写 | 默认区分大小写 |
g | 全局匹配 | 查找所有匹配项,默认找到一项就停止 |
m | 多行匹配 | 使边界字符 ^ 和 $ 匹配每一行的开头和结尾 |
s | 特殊字符圆点 . 中包含换行符 \n | 默认是不包含的 |
非打印字符
字符 | 含义 |
---|---|
\cx | 匹配由 x 指明的控制字符。例如 \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
\t | 匹配一个制表符。等价于 \x09 和 \cI |
\v | 匹配一个垂直制表符。等价于 \x0b 和 \cK |
\r | 匹配一个回车符。等价于\x0d 和 \cM |
\n | 匹配一个换行符。等价于 \x0a 和 \cJ |
\f | 匹配一个换页符。等价于 \x0c 和 \cL |
\s | 匹配任何空白字符。等价于 [ \t\v\r\n\f] 。注意 Unicode 正则表达式会匹配全角空格符。 |
\S | 匹配任何非空白字符。等价于 [^ \t\v\r\n\f] |
参考
评论
评论插件加载失败
正在加载评论插件