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

Notepad++如何用正则忽略标点空格删除模糊重复行

Notepad++ 模糊去重实现方案

纯正则表达式无法直接完成该需求:这类去重需要先对每行做归一化处理(剔除标点、空格,统一大小写)再比对重复值,Notepad++自带的查找替换功能不支持跨行的键值状态记录,推荐用内置插件实现,操作步骤如下:

插件法(推荐,10秒完成处理)

  • 打开Notepad++,顶部菜单栏依次选择「插件」→「插件管理」,搜索Python Script,勾选对应选项后点击安装,等待软件重启完成插件加载。
  • 重启后点击顶部菜单「插件」→「Python Script」→「New Script」,给脚本自定义命名(比如fuzzy_dedup.py)后保存。
  • 将以下代码粘贴到脚本编辑窗口,保存后关闭编辑页:
import re
editor.beginUndoAction()
all_lines = editor.getDocument().splitlines()
seen_norm_key = set()
keep_content = []

for line in all_lines:
    # 归一化规则:删除所有非字母数字字符,统一转小写
    norm_key = re.sub(r'[^a-zA-Z0-9]', '', line).lower()
    # 空行直接保留
    if not norm_key:
        keep_content.append(line)
        continue
    # 归一化结果未出现过则保留该行
    if norm_key not in seen_norm_key:
        seen_norm_key.add(norm_key)
        keep_content.append(line)

# 替换全文为去重后的内容
editor.setText('\r\n'.join(keep_content))
editor.endUndoAction()
  • 打开需要处理的目标txt文件,点击「插件」→「Python Script」→「Scripts」,选择刚才保存的脚本,一键执行即可完成去重。

方案说明

  • 去重逻辑完全匹配需求:自动忽略所有标点、空格、大小写差异,只要行内的字母、数字序列完全一致就判定为重复,每组重复行默认保留最先出现的1条,符合「保留任意一条即可」的要求。如果需要固定保留特定位置的重复行,只需要调整遍历、键值记录的逻辑即可,核心归一化规则不需要改动。
  • 原文件中的空行会完整保留,不会被误删。
  • 所有操作支持一键撤销,如果结果不符合预期,按Ctrl+Z即可回退到原始文件状态。

无插件替代方案(操作繁琐,仅应急使用)

如果不想安装插件,可以通过多步编辑手动实现:

  • 用列编辑模式在所有行的行首插入递增数字序号,给每行做唯一标识。
  • 复制全文到新标签页做归一化处理:
    • 查找内容填[^a-zA-Z0-9\r\n],替换为空,勾选「正则表达式」后执行全部替换,剔除所有标点、空格。
    • 查找内容填[A-Z],替换为\L$0,勾选「正则表达式」后执行全部替换,统一转小写。
  • 将原文件行和归一化后的副本行按行号一一对应合并,按归一化后的内容去重,再按原行号排序恢复原文顺序,删除辅助的序号列、归一化列即可。
    *该方法步骤多容易出现匹配错误,处理大文件效率极低,非必要不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:51:20