You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则移除HTML标签时匹配过度误删内容的问题求助

解决方案

问题根源

你用的.*是贪婪匹配模式,在提前去掉换行符后,它会匹配从第一个<pre>到最后一个</pre>之间的所有内容,把中间原本要保留的文本也一并删掉了。

正则修正方案

改用非贪婪匹配(.*?),同时添加re.DOTALL标记让.能匹配换行符,调整处理顺序避免提前删除换行导致的过度匹配:

import re

# 示例数据集
arr = [
    "<p>需要保留的文本</p><pre>要删除的代码块</pre><p>更多保留内容</p>",
    "<pre>多行\n代码内容</pre><p>其他文本</p>"
]

# 修改后的清洗流程
arr = [re.sub(r'<pre>.*?</pre>', '', i, flags=re.DOTALL) for i in arr]
arr = [re.sub(r'<code>.*?</code>', '', i, flags=re.DOTALL) for i in arr]
arr = [re.sub('<[^<]+?>', '', i) for i in arr]
# 最后统一移除换行符(如果需要)
arr = [i.replace('\n', '') for i in arr]

更可靠的替代方案(推荐)

用HTML解析库BeautifulSoup处理,避免正则匹配的局限性,适合复杂HTML结构:

from bs4 import BeautifulSoup

def clean_html_content(text):
    soup = BeautifulSoup(text, "html.parser")
    # 移除所有pre和code标签及其内容
    for tag in soup.find_all(['pre', 'code']):
        tag.decompose()
    # 提取纯文本并移除换行符
    return soup.get_text().replace('\n', '')

arr = [clean_html_content(i) for i in arr]

内容的提问来源于stack exchange,提问作者Siddharth vij

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:10:26