正则表达式简单介绍

正则表达式是用字符串描述的一个匹配规则,使用正则表达式可以快速判断给定的字符串是否符合匹配规则。
一、常见匹配规则
正则表达式 | 含义 | 备注 |
---|---|---|
\ |
转义字符 | 常用于转义 \ 、( 、[ 、{ 等 |
^ |
匹配字符串开头(第一个字符之前) | |
$ |
匹配字符串结尾(最后一个字符之后) | ^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}
等)一起使用
正则表达式默认使用贪婪匹配:任何一个规则,它总是尽可能多地向后匹配。*
和 +
限定符都是贪婪的,它们会尽可能多的匹配文字,在它们的后面加上一个 ?
可以实现非贪婪或最小匹配。
例如:计算字符串 10100
末尾 0
的个数:
- 使用规则:
(\d+)(0*)
,两个子规则分别匹配:10100
和
- 使用规则:
- 使用规则:
(\d+?)(0*)
,两个子规则分别匹配:101
和00
。
- 使用规则:
二、修饰符
带有修饰符的正则表达式格式:/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 许可协议。转载请注明出处!
评论