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

如何用Python从Regshot文本文件中剥离十六进制代码

解决Regshot文本清理:移除冒号后的十六进制数据

嘿,你已经完成了大部分工作啦!问题就卡在正则表达式的部分,没法精准去掉冒号后面的十六进制数据对吧?我来帮你补全代码逻辑,完美解决这个问题。

完整修正代码

import re
import sys

# 从命令行读取输入文件,同时创建清理后的输出文件
with open(sys.argv[1], 'r') as input_file, open('cleaned_reg_entries.txt', 'w') as output_file:
    # 跳过Regshot文件开头的7行头部信息(你原来的逻辑没问题)
    for _ in range(7):
        next(input_file)
    
    # 逐行处理内容
    for line in input_file:
        # 先去掉每行首尾的空白字符(换行、空格等)
        stripped_line = line.strip()
        # 只处理包含冒号的行(也就是带十六进制数据的项)
        if ':' in stripped_line:
            # 用正则移除冒号及其后面所有内容(从冒号到行尾)
            cleaned_entry = re.sub(r':.*$', '', stripped_line).strip()
            # 避免写入空行,只有内容不为空时才写入
            if cleaned_entry:
                output_file.write(cleaned_entry + '\n')
        else:
            # 处理没有冒号的行(比如移动的注册表项,根据你的需求调整)
            if stripped_line:
                output_file.write(stripped_line + '\n')

代码解释

  • 文件处理:同时打开输入和输出文件,一次性完成读取和写入,更高效
  • 跳过头部:保留了你原来跳过前7行的逻辑,因为Regshot的开头确实有一些无关的头部信息
  • 正则匹配:r':.*$'是核心——它会匹配从冒号:开始到行尾的所有内容,然后替换成空字符串,这样就只留下了冒号前的注册表项路径
  • 空行过滤:加入了strip()和非空判断,避免清理后的文件出现大量空行

更精准的正则(可选)

如果担心有特殊情况(比如注册表项里意外出现冒号,不过这种情况极少),可以用更精准的正则,只匹配冒号后是十六进制数据的部分:

cleaned_entry = re.sub(r':\s*(?:[0-9A-Fa-f]{2}\s*)+$', '', stripped_line).strip()

这个正则会匹配冒号后跟着的、空格分隔的十六进制字符(比如 : 00 1A B3),不会误删其他带冒号的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:50:29