删除其父级中的HTML子级

时间:2015-06-29 01:21:45

标签: python regex

我有一些像这样的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中可能有一些有用的标签,而我希望删除列表项和图像后的那些标签。

3 个答案:

答案 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)