非贪婪的正则表达式贪婪地行动

Ree*_*Ree 2 regex

这是一个简单的例子:

文本: <input name="zzz" value="18754" type="hidden"><input name="zzz" value="18311" type="hidden"><input name="zzz" value="17138" type="hidden">

正则表达式: /<input.*?value="(18754|17138)".*?>/

当匹配由空字符串替换时,结果为空字符串.我期待中间<input>保持,因为我使用非贪婪匹配(.*?).任何人都可以解释为什么它被删除?

NPE*_*NPE 5

有两场比赛:

  1. <input name="zzz" value="18754" type="hidden">
  2. <input name="zzz" value="18311" type="hidden"><input name="zzz" value="17138" type="hidden">

在第二种情况下,第一次.*?匹配name="zzz" value="18311" type="hidden"><input name="zzz".这是一场比赛而且非贪婪.