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

标签 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>保留,因为我使用的是非贪婪匹配(.*?)。任何人都可以解释为什么它被删除?

最佳答案

有两个匹配项:

  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" .这是一场比赛,而且是非贪婪的。

关于regex - 非贪婪的正则表达式贪婪地行动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971608/

相关文章:

javascript - 将正则表达式放在一起以突出显示文本框中的单词

javascript - 删除新行,除非新行前面有双空格

javascript - 正则表达式 trim 文本中的新行并附加中断

javascript - 从此正则表达式中排除特定数字

c# - 将字符串拆分为特定部分

python - 为什么正则表达式函数总是弹出属性错误?

javascript - JS : matching entries with capture groups, 占新行

c++ - 如何从 VC++ 2010 中的 std::regex 获取带有模式的字符串

ruby - 一个哈希中的多个子哈希

Javascript 正则表达式捕获