只需用正则表达式标记字符串beetwen两个单词的一部分

时间:2018-04-10 02:49:00

标签: regex

我有文字:

<div class="separator" style="clear: both; text-align: center;"><img src="/demodomain.com/-13ucJuEQEUw/linktoimg.png"><a href="https://12.imgdomain.com/-13ucJuEQEUw/linktoimg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="618" data-original-width="1062" height="372" src="https://21.imgdomain.com/-13ucJuEQEUw/WsGsjY2E2bI/-13ucJuEQEUw/linktoimg.jpg" width="640"></a></div>

我使用(?<=<img)(.*?)([0-9]+.imgdomain.com)(.*?)(.*?)>标记标记<img>中的图片域。 但它并没有像我期望的那样工作,它还标记了标记为<a>的图像域。

Demo picture

Demo Regex

如何才能获得正确的标记?谢谢!

1 个答案:

答案 0 :(得分:0)

你的正则表达式过于宽松,特别是使用.*这匹配任何字符而不是更好地使用[^&gt;]这与>不匹配此示例仅匹配img里面的部分。

(?<=<img)([^>]*)([0-9]+.imgdomain\.com)[^>]*?>

虽然对于一些简单的情况,使用正则表达式从HTML解析数据可能没问题,但你真的应该意识到这些陷阱。例如,带有转义>的代码会破坏上面的正则表达式。如果不是假设,您可以更好地使用解析器。这里是live demo

的链接