【问题标题】:Regular expression, match error正则表达式,匹配错误
【发布时间】:2015-05-29 22:52:57
【问题描述】:

我刚开始使用正则表达式,然后为我需要的情况编写一个正则表达式遇到了麻烦。

这是我的问题。我写了这个简单的正则表达式:

(<img).+[>]

它匹配大多数情况,但不适合介于两者之间的情况。 这是给您的图像,也许这可以更好地解释我的问题: 在那里你可以很好地看到它。它应该只选择 img-tag 区域,而不是它们之间的“a”。

谁能给我一些建议,我该如何解决这个问题?

【问题讨论】:

  • 你能发布这张图片中的内容吗?用正则表达式解析 html/xml 通常不会成功。这里的问题可能是您的正则表达式当前是贪婪的,因此它会选择所有内容,直到最后一个 &gt;。您也不需要字符类中的&gt;。您使用的语言也会很有用。

标签: regex replace match


【解决方案1】:

+ 是贪心的,它会匹配尽可能多的字符,因此它会在第一个 &gt; 之后继续获取字符,因为字符串中稍后有另一个字符可以匹配而不会使另一个无效正则表达式的一部分。

为防止+ 贪婪,在其后添加?

(<img).+?[>]

请注意,您的正则表达式的其他元素可能不是必需的,可以简化为:

<img.+?>

(因为[&gt;]&gt; 相同,而() 是您未使用的捕获组)

【讨论】:

    【解决方案2】:

    您可以省去大部分模式——其中大部分是不必要的。

    试试这个:

    <img.*?>
    

    删除不必要的括号后,重要的更改是添加 ? 以使其成为 不情愿 量词 - 尽可能匹配 little 的量词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2011-05-01
      相关资源
      最近更新 更多