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

Notepad++使用正则将XML每个Song节点下Num="-1"替换为从9递增数值

可落地操作方案

首先说明:Notepad原生的正则查找替换不支持自定义计数、分节点重置计数的逻辑,没法直接靠写一个正则表达式完成需求,用Notepad官方插件库的PythonScript插件就能零额外软件实现效果,全程点鼠标加复制粘贴就行,不需要代码基础。

    1. 安装对应插件
      打开Notepad++,点击顶部菜单栏「插件」→「插件管理」,在搜索框输入PythonScript,勾选搜索到的对应插件,点击右上角「安装」,等待插件安装完成后Notepad++会自动重启。
    1. 创建处理脚本
      重启完成后,点击顶部菜单栏「插件」→「PythonScript」→「New Script」,在弹出的保存窗口里给脚本随便命名,比如poi_replace.py,直接点保存就行,不用改保存路径。
    1. 粘贴处理代码
      保存后会自动打开脚本编辑页,把下面的代码完整复制粘贴到编辑区,按Ctrl+S保存脚本:
import re
# 开启撤销组,操作不对可以一键Ctrl+Z回退
editor.beginUndoAction()
file_content = editor.getText()
processed = []
# 遇到新Song节点就重置的计数器,初始值为9
current_num = 9
# 匹配规则:识别<Song节点开头、识别所有Num="-1"属性
match_rule = re.compile(r'<Song\b|Num="-1"', re.IGNORECASE)
last_pos = 0

for item in match_rule.finditer(file_content):
    # 先把匹配位置前的无修改内容存入结果
    processed.append(file_content[last_pos:item.start()])
    if item.group(0).lower().startswith('<song'):
        # 碰到新的Song节点,计数器重置回9
        current_num = 9
        processed.append(item.group(0))
    else:
        # 碰到要替换的Num="-1",替换为当前计数值后计数+1
        processed.append(f'Num="{current_num}"')
        current_num += 1
    last_pos = item.end()
# 把文件最后一段没匹配到的内容补上
processed.append(file_content[last_pos:])
# 把处理完的内容写回编辑区
editor.setText(''.join(processed))
editor.endUndoAction()
    1. 执行替换操作
      先在Notepad++里打开你要处理的XML文件,务必备份一份原文件留底,避免意外。之后点击顶部菜单栏「插件」→「PythonScript」→「Scripts」,找到你刚才保存的poi_replace脚本点击,1秒内就能完成所有替换。

校验规则:处理完成后你可以抽查任意节点:节点内第一个原本是Num="-1"的Poi标签会被替换为Num="9",第二个替换为Num="10",依次递增;遇到下一个开头的节点,计数会自动重置为9重新开始,完全匹配你的需求。如果效果不对,直接按Ctrl+Z就能撤销所有修改回到原文件状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:21:26