首页 > 代码库 > javascript正则——贪婪匹配
javascript正则——贪婪匹配
熟悉正则的朋友都知道,正则的匹配有“贪婪”和“非贪婪”之分。
“贪婪”匹配是尽可能多的匹配:
对于字符串‘aaaa’,
/a+/匹配整个字符串,而非贪婪匹配/a+?/匹配的是整个字符串的第一个‘a’,因为贪婪匹配是尽可能少的匹配。
——————————————
使用非贪婪匹配还有一些需要注意的地方。
考虑下面这个正则表达式:/a+b/,它匹配一个或多个a,以及一个b。
使用‘aaab’作为匹配字符串时,它会匹配整个字符串。
如果我们换成/a+?b/这样的非贪婪模式会怎么样?
我们期望它匹配一个a和最后一个b,相当于在‘aaab’中匹配最后两个字符‘ab’。
但实际上,这个模式匹配了整个字符串,和这个模式的贪婪匹配一样,这是为什么呢?
是因为正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置。由于该匹配是从字符串的第一个字符开始的,因此在这里不考虑它的子串中更短的匹配。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。