Python Regex-从Inner HTML中删除HTML标签和格式化字符



我正在处理像这样的单个html字符串

>> s = 'u><br/>n                                    Some text <br/><br/><u'

我在损坏的HTML或不完整的HTML标签中嵌入了有意义的文本。我只需要提取该内部文本,而忽略损坏的HTML。我怎样才能做到这一点?我正在使用

>> re.search(r'(.>)(<.>)(.>)', s)
>>

但这返回null。

如果我理解您正确,您正在寻找此输入:

u><br/>n                                    Some text <br/><br/><u

并接收此输出:

n                                    Some text 

这仅通过关心两个内向括号之间的内容就足够完成。我们想要:

  • 右支架>(所以我们知道从哪里开始)
  • 一些不包含左支架的文本n Some text(内容)
  • 左支架<(所以我们知道在哪里结束)

您想要:

>>> s = 'u><br/>n                                    Some text <br/><br/><u'
>>> re.search(r'>([^<]+)<', s)
<_sre.SRE_Match object; span=(6, 55), match='>n                                    Some text >

(可以通过.group(1)访问捕获的组。)

此外,如果您希望每行有多个匹配:

,则可能需要使用re.findall
>>> re.findall(r'>([^<]+)<', s)
['n                                    Some text ']

编辑:要解决评论:如果您有多个匹配项,并且要将它们连接到一个字符串中(有效地删除了所有类似于HTML的标签事物),请执行:

>>> s = 'nbsp;<br><br>Some text.<br>Some n more text.<br'
>>> ' '.join(re.findall(r'>([^<]+)<', s))
'Some text. Some n more text.'

最新更新