正则基础之量词

2023-10-26  本文已影响0人  Tinyspot

1. 常用量词

1.1 量词 (+)

示例:ab+ vs (ab)+

1.2 量词 (?)

1.3 量词 (*)

匹配双引号字符串(可以为空串 "")
正则表达式 "[^"]*"

2. 通用形式的量词

2.1 匹配数字

试试 \d{2,3}?, \d{2,3}+

2.2 匹配数字2

2.3 匹配数字 - 边界

\d{15}|\d{18} 匹配结果不准确,因为18 位数字也会匹配上前 15 位

试试 ^(\d{15}|\d{18)$

3. 量词的三种模式

Greedy 数量词 Reluctant 数量词 Possessive 数量词
X? X{0,1} X?? X{0,1} X?+ X{0,1}
X* X{0,} X*? X*+ ---
X+ X{1,} X+? X++ ---
X{n} --- X{n}? X{n}+ ---
X{n,} --- X{n,}? X{n,}+ ---
X{n,m} --- X{n,m}? X{n} X{n,m}+ X{n,m}

3.1 Greedy 量词

* 代表 0 到多次,匹配 0 次就是空字符串

3.2 Reluctant 量词

3.3 回溯

xy{1,3}z 首先匹配 3 个 y, 但正则 z 会匹配不上,此时正则向前回溯,吐出当前字符 z,接着用正则中的 z 去匹配

xy{1,3}?z 首先匹配 1 个 y, 但 z 会匹配不上,此时向前回溯...

3.4 独占模式 (Possessive)

独占模式 xy{1,3}+y 只能匹配 xyyyy

其他:xy{1,3}?y 只能匹配 xyy

4. 实战

字符串 "dxxxxdxxxd"
d.+d 贪婪匹配,虽然让位于整体匹配,但也是在尽可能多的匹配情况下
d.+?d 非贪婪匹配,匹配一个dxxxxd
d.+? 会匹配两个 dx

上一篇 下一篇

猜你喜欢

热点阅读