我有文字:
<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>
的图像域。
如何才能获得正确的标记?谢谢!
答案 0 :(得分:0)
你的正则表达式过于宽松,特别是使用.*
这匹配任何字符而不是更好地使用[^&gt;]这与>
不匹配此示例仅匹配img里面的部分。
(?<=<img)([^>]*)([0-9]+.imgdomain\.com)[^>]*?>
虽然对于一些简单的情况,使用正则表达式从HTML解析数据可能没问题,但你真的应该意识到这些陷阱。例如,带有转义>
的代码会破坏上面的正则表达式。如果不是假设,您可以更好地使用解析器。这里是live demo