在Python中删除之间的html标记和字符串

时间:2016-08-19 19:39:45

标签: python regex

我对正则表达式很新。基本上,我想使用正则表达式使用正则表达式从字符串中删除<sup> ... </sup>

输入:

<b>something here</b><sup>1</sup><sup>,3</sup>, another here<sup>1</sup>

输出:

<b>something here</b>, another here

这是一个简短的方法,并说明如何做到这一点?

注意此问题可能重复。我尝试过但无法找到解决方案。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

import re
s = "<b>something here</b><sup>1</sup><sup>,3</sup>, another here<sup>1</sup>"

s2 = re.sub(r'<sup>(.*?)</sup>',"", s)

print s2
# Prints: <b>something here</b>, another here

请记住使用(.*?),因为(.*)是他们所谓的贪婪量词,您将获得不同的结果:

s2 = re.sub(r'<sup>(.*)</sup>',"", s)

print s2
# Prints: <b>something here</b>

答案 1 :(得分:1)

困难的部分是知道如何对标签之间的东西进行最小匹配而不是最大匹配。这很有效。

import re
s0 = "<b>something here</b><sup>1</sup><sup>,3</sup>, another here<sup>1</sup>"
prog = re.compile('<sup>.*?</sup>')
s1 = re.sub(prog, '', s0)
print(s1)
# <b>something here</b>, another here