正则表达式
Kecho

正则表达式是用字符串描述的一个匹配规则,使用正则表达式可以快速判断给定的字符串是否符合匹配规则。

常见匹配规则

正则表达式含义备注
\转义字符常用于转义 \([{
^匹配字符串开头(第一个字符之前)
$匹配字符串结尾(最后一个字符之后)^A\d{3}$ 可匹配 A001A380
.\n\r 之外的任意单个字符注意 [.] 只会匹配 . 字符,等价于 \.
A指定字符 A
\u548c指定 Unicode 字符\u548c 可匹配
\b匹配一个单词边界,即字与空格间的位置作用类似于 ^$,注意 \bChaCha\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* 可匹配 AAAAAA、…
+至少一个A+ 可匹配 AAA、…
?0 或 1 个(也用于 非贪婪匹配A? 可匹配 A
{3}指定个数,此处指定为 3A{3} 可匹配 AAA
{2,3}指定个数范围A{2,3} 可匹配 AAAAA
{2,}至少个数,此处为至少 2A{2,} 可匹配 AAAAAAAAA、…
{0,2}至多个数,此处为至多 2A{0,2} 可匹配 AAA
X|Y匹配 XY(z|f)ood 可匹配 zoodfood
[ABC]匹配 [...] 内的任意单个字符[ABC] 可匹配 ABC
[^ABC]匹配除指定字符之外的任意单个字符[^ABC] 可匹配 D1_
[A-C1-3X]匹配指定范围内的单个字符[A-C1-3XY] 可匹配 ABC123X
[^A-C]匹配指定范围之外的任意单个字符[^A-C] 可匹配 D1_、…
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]

参考

 评论
评论插件加载失败
正在加载评论插件
总字数 29.4k