正则RegExp的懒惰性和贪婪性; 分组捕获;

Posted qinlinkun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则RegExp的懒惰性和贪婪性; 分组捕获;相关的知识,希望对你有一定的参考价值。

1.正则的懒惰性???

每次在它的方法exec中捕获的时候,只捕获第一次匹配的内容,而不往下捕获,我们把这种情况称为正则的懒惰性

且每一次捕获的位置都是从索引0开始

正则的实例对象上有一个lastindex的属性,是正则开始捕获的起始位置

var reg=/d+/;

var st="abc123efg456";

console.log(reg.exec(st))输出123

如何解决正则的懒惰性呢

用一个修饰词“g”就可以了

2.正则的贪婪性???

每次匹配到的结果都是最长的,把这种情况称为贪婪性。

var reg=/d+/;

var st="abc12345"

console.log(reg.exec(st))  结果是12345

如何让解决他的贪婪性呢

在元字符量词后加?

var reg=/d+?/g

3.分组捕获  /(   )/;

分组捕获的作用(1)改变优先级(2)分组引用

1   2分别为跟第一组和第二组出现同样的内容

var reg=/(w)1(w)2/;

var st="sstt"

console.log(reg.test(st))==true

分组捕获的前提是正则存在分组,而且是不仅会捕获到大正则,也会捕获到小正则的内容

var reg=/(a)(b)/

var st="abcd"

console.log(reg.exec(st))  结果输出是  ab  a  b

那么该如何解决这种情况呢 

在不想让它出现的那个前面加?:

var reg=/(a)(?:b)/

var st="abcd"

console.log(reg.exec(st))    结果输出的是   ab  a 

 


以上是关于正则RegExp的懒惰性和贪婪性; 分组捕获;的主要内容,如果未能解决你的问题,请参考以下文章

15.python正则匹配 元字符转义重复或捕获分组断言:零度断言负向零宽断言贪婪非贪婪引擎选项

[Study]Java 版正则表达式

[Study]Java 版正则表达式

JavaScript正则表达式模式匹配——使用exec返回数组捕获性分组和非捕获性分组嵌套分组

正则表达式之补获性分组与非补获性分组

javascript 正则表达式之分组与前瞻匹配详解