仅当出现在特定模式之后的字符才从 HTML 字符串中删除

Posted

技术标签:

【中文标题】仅当出现在特定模式之后的字符才从 HTML 字符串中删除【英文标题】:Remove characters from HTML string only if they appear after specific pattern 【发布时间】:2019-01-13 07:22:41 【问题描述】:

所以,我尝试用谷歌搜索我的问题,但找不到满意的答案。我编写了一个用于解析 html 电子邮件的程序。直到现在它都可以正常工作,但我猜 Outlook 协议中已经更新了一些东西。但是,现在,在提取电子邮件的 HTML 内容时,除了 style 标记外,一切正常。

style 标记之后的所有内容由于某种原因自动转义。例如像这样:<span style=\'color:red; background:yellow; mso-highlight:yellow\'><span style=\'background:yellow;mso-highlight:yellow\'> 注意样式 ' 标记是如何因某种原因被转义的?这导致我的软件出现问题,并使其崩溃。我真的不需要这些转义标记并想摆脱它们。

所以现在我的问题是,如何仅删除这些特定位置的标记(如果可能)?所以只在style= 之后以及样式属性的末尾,就在'> 之前。非常感谢所有帮助,我完全不知道如何进行。我真的不想删除所有的反斜杠,所以没有任何真正需要转义的东西不会被转义。

提前致谢!

【问题讨论】:

【参考方案1】:

一个简单的正则表达式应该可以工作:

import re

text = re.sub(r"style=\'(.*)\'", r"style='\1'", raw_text)

【讨论】:

完美,正是我想要的!太感谢了!我的正则表达式技能真的很生疏

以上是关于仅当出现在特定模式之后的字符才从 HTML 字符串中删除的主要内容,如果未能解决你的问题,请参考以下文章

仅当查询不为空时,才从查询写入 BigQuery 中的表

仅当自动增量数据相等时才从另一个表列更新 mysql 列

仅当记录匹配时才从另一个表中更新记录

Firestore:仅当有更新时才从服务器获取数据,否则从缓存中获取

仅当两个表中都存在员工时才从临时表中更新员工 ID

仅当字符串 > 特定长度时,才将字符添加到字符串的特定位置