正则表达式,匹配错误

时间:2015-05-29 22:52:58

标签: regex replace match

我刚开始使用正则表达式,并通过编写一个我需要的案例来解决问题。

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

(<img).+[>]

它匹配大多数情况,但不适用于介于两者之间的情况。 这是一张图片,也许这可以更好地解释我的问题: enter image description here 在那里你可以很好地看到它。它应该只选择img-tag区域,而不是它们之间的'a'。

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

2 个答案:

答案 0 :(得分:3)

+是贪婪的,并且会尽可能多地匹配字符,因此它会在第一个>之后继续获取字符,因为字符串后面还有另一个字符可以匹配没有使正则表达式的其他部分无效。

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

(<img).+?[>]

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

<img.+?>

(由于[>]>相同,而()是您未使用的捕获组,所以

答案 1 :(得分:2)

您可以免除大部分模式 - 其中大部分都是不必要的。

试试这个:

<img.*?>

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