正则表达式,匹配错误

Regular expression, match error

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

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

(<img).+[>]

它适用于大多数情况,但不适用于介于两者之间的情况。 这是给您的图片,也许这会更好地解释我的问题: 在那里你可以很好地看到它。它应该 select 只有 img-tag 区域而不是它们之间的 'a'。

有人可以给我一些解决这个问题的建议吗?

+ 是贪心的,会匹配尽可能多的字符,所以它会在第一个 > 之后继续获取字符,因为字符串中后面还有另一个字符可以在不使正则表达式的其他部分无效的情况下进行匹配。

为了防止 + 贪婪,在它后面添加一个 ?

(<img).+?[>]

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

<img.+?>

(因为 [>]> 相同,并且 () 是您未使用的捕获组)

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

试试这个:

<img.*?>

删除不必要的括号后,重要的变化是添加 ? 使其成为 reluctant 量词 - 匹配 little尽可能。