JS 正则表达式

贪婪与非贪婪:同一段文本,两种停法

正则默认会“尽量多”地扩张匹配;量词后加 ? 后,会改成“尽量少”,一满足条件就停。

观察对象:尖括号标签片段

快速切换

这里对比的是量词 +:它负责吃掉“一个或多个字符”。区别在于它什么时候愿意停。

贪婪匹配

默认尽量多,能继续吃就继续吃。

/<.+>/g

    非贪婪匹配

    ? 后尽量少,够了就停。

    /<.+?>/g

      1. 起点相同

      两个表达式都会先找到第一个 <

      2. 中间不同

      贪婪的 .+ 先吃很多,再回退;非贪婪的 .+? 先吃很少。

      3. 终点不同

      在默认示例里,贪婪会连成一大段;非贪婪会拆成每个标签。