这是一个简单的例子:
文本:<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>
保留,因为我使用的是非贪婪匹配(.*?
)。任何人都可以解释为什么它被删除?
最佳答案
有两个匹配项:
-
<input name="zzz" value="18754" type="hidden">
-
<input name="zzz" value="18311" type="hidden"><input name="zzz" value="17138" type="hidden">
第二种情况,第一种.*?
火柴name="zzz" value="18311" type="hidden"><input name="zzz"
.这是一场比赛,而且是非贪婪的。
关于regex - 非贪婪的正则表达式贪婪地行动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971608/