限定符指定在输入中必须存在字符、组或字符类的多少个实例才能找到匹配项。下表列出了支持的限定符。

贪婪限定符 惰性限定符 说明
* *? 匹配零次或多次。
+ +? 匹配一次或多次。
? ?? 匹配零次或一次。
{n} {n}? 准确分配n次。
{n,} {n,}? 至少匹配 n次。
{n,m} {n,m}? 从n与m次。

m 是整数常数。

tips:尽可能多=贪婪,尽可能少=惰性。

下面来一一验证吧!

*?尽可能少的匹配0次或n次

 正则表达式之我见—限定符

*限定符前面的o出现0次或n次,所以同时匹配zo和zoo。

正则表达式之我见—限定符

*?惰性限定符则匹配满足条件的最短结果。需要注意的是*表示0次或多次,所以在这里o为0也就是结果为zo是最短的。

+?尽可能少的匹配1次或n次

 +限定符是一次或多次,所以此处不满足zoo条件的zo,他不能忍,只显示了zoo。

正则表达式之我见—限定符

+?惰性限定符满足条件的就是最短的,超出部分竟然直接无视了...

??尽可能少的匹配0次或1次

 正则表达式之我见—限定符

?限定符前面的o出现0次或1次,对应的结果zo和zoo。

正则表达式之我见—限定符

??限定符在0和1之间,选择最短的结果:即为0的情况zo。

{n}?尽可能少的匹配n次

 正则表达式之我见—限定符

正则表达式之我见—限定符

{n}限定符无论尽可能多还是尽可能少,6个a不管你怎么样排列,结果都一样。

{n,}?尽可能少的匹配n次以上

 正则表达式之我见—限定符

{n,}限定符就是n个以上,此处是3个以上,结果6个a全收了...真狠!

正则表达式之我见—限定符

{n,}?限定符是最少n个,此处是3也就是3个,6个a当然是3个一组排2组了,如果n=2,就是2个一组,排3组。

(必须:n<m)

{n,m}限定符原则是以m的值为优先显示,这里是1-3个a,6个a被瓜分成2组3个的。如果是2-4会怎样?

正则表达式之我见—限定符

看到了嘛?2个起。只要够2个,他就要了你的..

正则表达式之我见—限定符

{n,m}?限定符原则是以n的值为优先显示,此处n=2,6个a按2个一组分,结果显示3组。那如果n=1呢?

正则表达式之我见—限定符

看到没,m直接被无视了,一个都不放过6个a都在这里。说明在{n,m}?惰性限定符等于{n,}?

相关文章: