这里有两个建议: 1)使用/(&.+;)/ig匹配所有实体。然后,使用您正在使用的任何编程语言,将这些匹配替换为空字符串。例如,在php中使用preg_replace;在C#中使用Regex.Replace。有关更多情况的类似解决方案,请参见本SO:How to remove html special chars?的 2)如果你真的想使用纯文本部分来实现这一点,你可以尝试这样做:/(?:^|;)([^&;]+)(?:&|$)/ig。它实际上试图做的是匹配;和&之间的片段,其中包含没有实体的开始和结束的特殊情况。这可能不是正确的方法,你可能会遇到不同的情况。
from html.parser import HTMLParser
line_with_html = 'Data before tag with <span style="color:var(--md-font-color-green)">some gren text</span> with a nice logo'
class CleanHTML(HTMLParser):
def reset(self) -> None:
self.extracted_data = ""
return super().reset()
def remove_tags(self, html_data: str) -> str:
"""
Args:
html_data (str): HTML data which might contain tags.
Returns:
str: Data without any HTML tags. Forces feeding of any buffered data.
"""
self.reset()
self.feed(html_data)
self.close()
return self.extracted_data
def handle_data(self, data: str) -> None:
"""
Args:
data (str): Html data extracted from tags to be processed.
"""
self.extracted_data += data
p = CleanHTML()
print(p.remove_tags(line_with_html))
4条答案
按热度按时间bvjveswy1#
查找HTML实体的更好语法是以下正则表达式:
字符串
此语法忽略假实体。
enxuqcxy2#
这里有两个建议:
1)使用
/(&.+;)/ig
匹配所有实体。然后,使用您正在使用的任何编程语言,将这些匹配替换为空字符串。例如,在php中使用preg_replace;在C#中使用Regex.Replace。有关更多情况的类似解决方案,请参见本SO:How to remove html special chars?的2)如果你真的想使用纯文本部分来实现这一点,你可以尝试这样做:
/(?:^|;)([^&;]+)(?:&|$)/ig
。它实际上试图做的是匹配;
和&
之间的片段,其中包含没有实体的开始和结束的特殊情况。这可能不是正确的方法,你可能会遇到不同的情况。cfh9epnr3#
它是特定于语言的,但在Python中可以使用
html.unescape
(MAN)。喜欢的:字符串
krugob8w4#
在简短地查看Python文档之后,可以看到
html.parser
模块:https://docs.python.org/3/library/html.parser.html#module-html.parser在一些简短的原型设计之后,可以得到相当简单的代码:
字符串
无需: