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

Notepad++正则表达式:移除含$GNTXT且以S*12结尾的子串

解决思路

你之前用的正则(.*)GNTXT(.*)会匹配所有包含GNTXT的行,根源是.*的贪婪匹配特性会吞掉整行内容。要精准定位并移除包含$GNTXT且以S*12结尾的目标字符串,需要调整正则逻辑:

  • 转义正则特殊字符:$和*在正则中有特殊含义,要分别写成\$和\*
  • 使用非贪婪匹配:用.*?替代.*,确保匹配到第一个S*12就停止,不会过度匹配后续内容

最终的正则表达式应为:\$GNTXT.*?S\*12

实际操作示例

用sed工具处理(适合快速批量操作)

处理二进制文件时需加-b参数避免乱码:

sed -b 's/\$GNTXT.*?S\*12//g' input.file > output.file

如果目标字符串跨行,可添加-z参数开启跨行匹配:

sed -zb 's/\$GNTXT.*?S\*12//g' input.file > output.file

用Python处理(更稳妥,避免二进制数据损坏)

通过二进制读写模式操作,同时支持跨行匹配:

import re

# 编译正则,re.DOTALL让.匹配换行符,支持跨行匹配
pattern = re.compile(rb'\$GNTXT.*?S\*12', re.DOTALL)
with open('input.file', 'rb') as f_in, open('output.file', 'wb') as f_out:
    content = f_in.read()
    cleaned_content = pattern.sub(b'', content)
    f_out.write(cleaned_content)
关键注意事项
  • 处理二进制文件必须用二进制模式读写,否则会因编码转换损坏文件内容
  • 非贪婪模式.*?是精准匹配的核心,能避免误删目标字符串之外的内容
  • 若目标字符串存在跨行情况,必须开启跨行匹配模式,否则会匹配失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:07:36