我试图完成在其他HTML中间的图片标签的关闭,因为当我使用JS创建图片标签并将其发送给自己时,它没有正确关闭。我为此使用Python。
给定此字符串:
<div><img src="/images/someImage.png" alt="Some Image"></div>
我怎样才能得到
<div><img src="/images/someImage.png" alt="Some Image" /></div>
到目前为止,这是我想出的:
re.sub("<img(.*)(?<!/)>", "<img\\1 />", x)
仅使用图像,它就可以工作,但是一旦添加div
包围它,它就会把它放在错误的位置:
<div><img src="http://sh.local/images/tripAlbums/2014/thumbs/Background%20Default.jpeg"></div />
您会注意到,结尾的DIV在image标签上有我想要的。
请注意,尽管我只显示一张图像,但可能会显示更多图像,因此它应该与global一起使用re.sub
。
谢谢。
使用非贪婪 .*?
>>> re.sub("<img(.*?)(?<!/)>", "<img\\1 />", str)
'<div><img src="/images/someImage.png" alt="Some Image" /></div>'
或者
您也可以尝试
>>> re.sub("<img([^>]*)(?<!/)>", "<img\\1 />", str)
'<div><img src="/images/someImage.png" alt="Some Image"/></div>'
[^>]*
否定的角色类。匹配>
零次或多次清洁方法
将会使用更干净,更漂亮的方法 BeautifulSoup
>>> import bs4
>>> str='<div><img src="/images/someImage.png" alt="Some Image"></div>'
>>> soup = bs4.BeautifulSoup(str)
>>> soup.prettify()
u'<div>\n <img alt="Some Image" src="/images/someImage.png"/>\n</div>'
注意Regex不是解析html的正确工具。建议使用HTML解析器,例如BeautifulSoup
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句