正则表达式简单介绍
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} 指定个数,此处指定为 3 A{3} 可匹配 AAA
{2,3} 指定个数范围 A{2,3} 可匹配 AAAAA
{2,} 至少个数,此处为至少 2 A{2,} 可匹配 AAAAAAAAA、…
{0,2} 至多个数,此处为至多 2 A{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} 等)一起使用

正则表达式默认使用贪婪匹配:任何一个规则,它总是尽可能多地向后匹配。
*+ 限定符都是贪婪的,它们会尽可能多的匹配文字,在它们的后面加上一个 ? 可以实现非贪婪或最小匹配。
例如:计算字符串 10100 末尾 0 的个数:

    1. 使用规则:(\d+)(0*) ,两个子规则分别匹配:10100
    1. 使用规则:(\d+?)(0*),两个子规则分别匹配: 10100

二、修饰符

带有修饰符的正则表达式格式:/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]

四、参考

  • 本文标题:正则表达式简单介绍
  • 本文作者:kecho
  • 创建时间:2022-04-23 12:10:42
  • 本文链接:https://blog.kecho.top/2022/正则表达式简单介绍.html
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论