Skip to content

惰性匹配 ​

本节目标:理解“惰性匹配”的核心思路,并能把它用于实际开发或面试表达。

在满足条件的前提下,尽可能少的匹配字符。

定义惰性匹配的方法:在重复类量词后面添加问号?限制词。

贪婪匹配体现了最大化匹配原则,惰性匹配则体现最小化匹配原则。

**示例****2**
**var** s = "<html><head><title></title></head><body></body></html>";
**var** r = /<.*?>/
**var** a = s.match(r);  //返回单个元素数组["<html>"]
在上面示例中,对于正则表达式 /<.*?>/ 来说,它可以返回匹配字符串 "<>",但是为了能够确保匹配条件成立,在执行中还是匹配了带有 4 个字符的字符串“html”。惰性取值不能够以违反模式限定的条件而返回,除非没有找到符合条件的字符串,否则必须满足它。
能匹配就一定要匹配;
能匹配最短的,就不要匹配更长的;
针对 6 种重复类惰性匹配的简单描述如下:
{n,m}?:尽量匹配 n 次,但是为了满足限定条件也可能最多重复 m 次。
{n}?:尽量匹配 n 次。
{n,}?:尽量匹配 n 次,但是为了满足限定条件也可能匹配任意次。
??:尽量匹配,但是为了满足限定条件也可能最多匹配 1 次,相当于 {0,1}?。
+?:尽量匹配 1 次,但是为了满足限定条件也可能匹配任意次,相当于 {1,}?。
*? :尽量不匹配,但是为了满足限定条件也可能匹配任意次,相当于 {0,}?。

本站总访问 — 次