我正在处理像这样的单个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.'