我有一个字符串和一个匹配部分字符串的正则表达式。我希望在删除所有匹配项后返回一个字符串,表示原始字符串的剩余部分。
import re
string="<font size="2px" face="Tahoma"><br>Good Morning, </font><div><br></div><div>As per last email"
pattern = r'<[a-zA-Z0-9 ="/\-:;.]*>'
re.findall(pattern, string)
['<font size="2px" face="Tahoma">',
'<br>',
'</font>',
'<div>',
'<br>',
'</div>',
'<div>']
desired_string = "Good Morning, As per last email"
答案 0 :(得分:2)
使用re.findall
代替re.sub
,用空字符串替换每个matche。
re.sub(pattern, "", string)
虽然这是关于从字符串中删除模式的一般问题的字面答案,但看起来您的具体问题与操作HTML有关。尝试使用正则表达式操作HTML通常是一个坏主意。有关详细信息,请参阅此问题的答案:https://stackoverflow.com/a/1732454/7432
答案 1 :(得分:1)
使用像BeautifulSoup这样的HTML解析器,而不是正则表达式。看起来您正在尝试剥离HTML元素并获取基础文本。
from bs4 import BeautifulSoup
string="""<font size="2px" face="Tahoma"><br>Good Morning, </font><div><br></div><div>As per last email"""
soup = BeautifulSoup(string, 'lxml')
print(soup.get_text())
输出:
Good Morning, As per last email
有一点需要注意的是,使用此方法将
更改为常规空间。