-1
4

2 回答 2

4

您的误解在于您用于匹配和替换的模式。r'\<.+\>'贪婪的,这意味着它会尽可能多地匹配。在您提供的这个示例中,您的模式正在获取它找到.+的第一个和最后一个之间的所有内容 ( ) 。您可以在Regex101等工具中可视化该行为,使其更易于理解。<>

?相反,通过将限定符添加到您的模式来使您的模式“懒惰” .+

import re

s = '彼女は&lt;font color="#ff0000"><font color="#ff0000">看護婦&lt;/font></font>です。'
x = re.sub(r'\<.+?\>','',s)
print(x) # 彼女は看護婦です。

复制| 正则表达式101

但是,您确实应该为此类活动使用适当的 HTML 解析器。正则表达式通常被认为不是处理 HTML 内容的好工具。有关如何完成此任务的示例,请参阅Juan C 对此问题的回答。

于 2020-08-06T18:16:26.457 回答
3

如果您不介意使用另一个库,您可以轻松地将 html 代码解析为字符串BeautifulSoup

from bs4 import BeautifulSoup

s = '彼女は&lt;font color="#ff0000"><font color="#ff0000">看護婦&lt;/font></font>です。'

soup = BeautifulSoup(s, 'lxml')

print(soup.text)

输出:

Out[29]: '彼女は看護婦です。'
于 2020-08-06T18:12:57.340 回答