一、概念
我们通常可以通过正则的一些规则匹配到所需的数据,例如[0-9]或d来匹配单个数字字符等。
量词,是用来限定我们定义好的规则出现的次数。
二、常见量词
量词 | 说明 |
---|---|
{n} | 精确匹配n次 |
{n,} | 匹配n次或更多次 |
{0,1} | 匹配零次或一次) |
{1,0} | 匹配一次或更多次 |
{1, } | 匹配零次或更多次 |
{m,n} | 字符至少有m个,至少有n个 |
{m,} | 字符出现至少m个 |
{m} | 字符出现m次 |
^n | 匹配以n开始的字符串 |
{n*} | 表示至少包含零个或者多个n的字符串 |
{n?} | 表示至少包含零个或者一个n的字符串 |
{n } | 表示至少一个n的字符串 |
n$ | 匹配以n结尾的字符串 |
{n?} | 表示至少包含零个或者一个n的字符串 |
| 至少一个 |
* | 零个或者多个 |
? | 零个或者一个 |
^ | 放置在[]外部,作用为:以…开头 |
$ | 结尾(特殊字符) |
转义字符 | |
| | 指明两项之间的一个选择。要匹配 |,请使用 |。 |
[] | 标记一个中括号表达式的开始。要匹配 [,请使用 [。 |
v | 匹配一个垂直制表符。等价于 x0b 和 cK。 |
t | 匹配一个制表符。等价于 x09 和 cI。 |
S | 匹配任何非空白字符。等价于 [^ fnrtv]。 |
s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。注意 Unicode 正则表达式会匹配全角空格符。 |
r | 匹配一个回车符。等价于 x0d 和 cM。 |
n | 匹配一个换行符。等价于 x0a 和 cJ。 |
f | 匹配一个换页符。等价于 x0c 和 cL。 |
cx | 匹配由x指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。 |
w | a-zA-ZO-9 |
W | 除 w 之外的任何字符,也就是 [Aa-zA-ZO-9] |
d | [0-9], 即数字 |
D | 除 d 以外的任何字符,即 [^a-zA-Z0-9] |
B | 匹配非单词边界,即左右两边都是 “w” 范围或者左右两边都不是 “w” 范围时的字符缝隙 |
b | 匹配单词边界 |
xXX | 编号在 0 ~ 255 范围的字符,比如:空格可以使用 “x20” 表示 |
uXXXX | 任何字符可以使用 “u” 再加上其编号的 4 位十六进制数表示,比如:”u4E2D” |
三、忽略优先量词
忽略优先的量词会匹配尽可能少的内容,只需要满足下限,匹配就能成功
忽略优先量词 |
---|
*? |
? |
?? |
{n}? |
{n,m}? |
{n,}? |
{,m}? |
四、匹配优先量词
量词在正常情况下都是匹配优先的
匹配优先量词 |
---|
* |
|
? |
{n} |
{n,m} |
{n,} |
{,m} |
五、占有优先量词
占有优先是最大匹配后不“交还”
占有优先量词 |
---|
? |
* |
|
{m,n} |