正则表达式(.+)和(.+?)的区别

(.+)默认是贪婪匹配
(.+?)为惰性匹配
 

1. 匹配任意字符用 .

通配符 . 作为任何字符的占位符 (数量为1)

2. 匹配连续出现零次或多次的字符用 * 

3. 匹配一行中出现一次或多次的字符, 使用 +

4.惰性匹配

字符串中与给定要求匹配的最小部分

默认情况下,正则表达式是贪婪的(匹配满足给定要求的字符串的最长部分)

使用 ? 阻止贪婪模式 变为惰性匹配

 

惰性匹配:

1.贪婪匹配是先看整个字符串是否匹配,如果不匹配,它会去掉字符串的最后一个字符,并再次尝试,如果还不匹配,那么再去掉当前最后一个,直到发现匹配或不剩任何字符。

var str='abcdabceba'

/.+b/ 匹配一个或多个任意字符后面跟一个字母b

执行str.match(/.+b/) // 匹配到 abcdabceb

第一次(先看整个字符串是否是一个匹配) abcdabceba 不匹配,然后去掉最后一个字符a

第二次(去掉最后一个字符后再匹配) abcdabceb 匹配,返回abcdabceb。

2.惰性匹配是从左侧第一个字符开始向右匹配,先看第一个字符是不是一个匹配,如果不匹配就加入下一个字符再尝式匹配,直到发现匹配

var str='abcdabceba' /.+?b/ 匹配一个或多个任意字符后面跟一个字母b 执行str.match(/.+?b/) // 匹配到ab

第一次(读入左侧第一个字符) a 不匹配加一个再式

第二次 ab 匹配,返回ab

原文链接: https://www.cnblogs.com/yalong/p/14101587.html

 
posted @ 2022-06-17 20:03  Richard_ZC  阅读(2043)  评论(0)    收藏  举报