【发布时间】:2012-01-23 12:29:23
【问题描述】:
这是一个简单的例子:
文字:<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> 会保留,因为我使用的是非贪婪匹配(.*?)。任何人都可以解释为什么它被删除?
【问题讨论】:
-
以下是什么意思:“当匹配被空字符串替换时”?
-
您的正则表达式匹配整个输入标签,因此引擎会选取整个输入标签并将其替换为空字符串。然后发生的事情是您的三个输入标签完全消失了。
-
@BoltClock,不,模式匹配两次:1:
<input name="zzz" value="18754" type="hidden">和 2:<input name="zzz" value="18311" type="hidden"><input name="zzz" value="17138" type="hidden">。还是我误会了? -
@Bart Kiers:哦等等……我现在明白了。是的,我的坏...
-
@BoltClock: 但正则表达式不应匹配中间的
<input>。我不明白为什么会这样。
标签: regex