我有一些像这样的HTML:
<ul>
<li>Item 1</li><br>
<li>Item 2</li><br>
<li>Item 3</li><br>
</ul>
<img src="someImage.png"><br>
我想要使用正则表达式从<br>
标记和<li>
标记之后删除<img>
标记,但我不确定如何处理此问题。 HTML不会保持不变,因此图片和列表可能位于不同的位置,或者可能还有其他内容,但<br>
和</li>
<之后总会有</img>
/ p>
我可以使用什么正则表达式来解决这个问题?感谢。
修改
我尝试将此(<img.+?>)<br>
用于图片但不起作用。
我不想只删除所有<br>
标签,因为HTML中可能有一些有用的标签,而我希望删除列表项和图像后的那些标签。
答案 0 :(得分:0)
这是删除br
代码的一种方法:
import re
print re.sub('<br>', "", '<li>Item 1</li><br>')
如果文档中有许多br
标记,则必须将数据存储在如下变量中:
data = 'your full html document as a string'
print re.sub('<br>', "", data)
然后,这将删除整个br
文档中的所有data
代码。
如果您只想删除br
代码后面的li
代码,那么您可以这样做:
data = 'your full html document as a string'
print re.sub(r'^<li>\<br>', "", data)
答案 1 :(得分:0)
这可以在不使用正则表达式的情况下解决(在此处插入对传奇regex / html答案的引用):
the_string = '<p>Text we want to keep</p><br>'
the_string = the_string.rstrip('<br>')
答案 2 :(得分:-1)
以下是从列表中删除<br>
的方法:
re.sub(r'</li>(\<br>)', '\1', string)
因为图像是一样的。
re.sub(r'(<img.+?>)(\<br>)', '\1', string)