找回密码
 加入
搜索
查看: 3005|回复: 10

[网络通信] 求正则提取16进制 部分字符(文件名)[已解决]

[复制链接]
发表于 2020-7-15 14:59:00 | 显示全部楼层 |阅读模式
本帖最后由 onestone01 于 2020-7-16 16:44 编辑

想提取 16进制中的文件名
示例字符:44003A005C0061005C0062005C00610031002E00650078006500000344003A005C0061005C00630073002E0064006C006C000003
需要提取:44003A005C0061005C0062005C00610031002E00650078006500000344003A005C0061005C00630073002E0064006C006C000003
也就是提取一个路径中的文件名 610031002E00650078006500(转换后为 a1.exe;  630073002E0064006C006C00 (转换后为cs.dll
匹配起始位置后面一个5C00至0003之间的字符,字符串包含多个5C00,就不会了。
#include <Array.au3>
Local $sSource = '44003A005C0061005C0062005C00610031002E00650078006500000344003A005C0061005C00630073002E0064006C006C000003'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '5C00(.*?)0003', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))



发表于 2020-7-15 15:01:51 | 显示全部楼层
为何不先转换为明文
 楼主| 发表于 2020-7-15 15:04:39 | 显示全部楼层
afan 发表于 2020-7-15 15:01
为何不先转换为明文

这是读取一个文件的二进制数据,部分数据转换不了或者转换后乱码
发表于 2020-7-15 15:10:41 | 显示全部楼层
你这样读取不一定就是按字节(2字符)分割的位置。可能是错位的~ 需要从头读取 ^(?:..)* xxx,如果不确定数量,需要再循环找第二个
 楼主| 发表于 2020-7-15 15:20:30 | 显示全部楼层
本帖最后由 onestone01 于 2020-7-15 15:22 编辑
afan 发表于 2020-7-15 15:10
你这样读取不一定就是按字节(2字符)分割的位置。可能是错位的~ 需要从头读取 ^(?:..)* xxx,如果不确定数量 ...

确实可能是错位的,我查看发现的规律。我想要获取的文件名在5C00至0003之间的字符。5C00(\)错位的概率应该不大吧
发表于 2020-7-15 15:24:13 | 显示全部楼层
onestone01 发表于 2020-7-15 15:20
确实可能是错位的,我查看发现的规律。我想要获取的文件名在5C00至0003之间的字符。5C00(\)错位的概率 ...

只能说不可靠,程序不健壮,会有隐患~
发表于 2020-7-15 15:28:41 | 显示全部楼层
本帖最后由 afan 于 2020-7-16 12:52 编辑

匹配后面那个示例
Highlight code by AuREHelper
^(?:..)*5C00((?:(?!5C00)..)+?)0003


评分

参与人数 1金钱 +30 收起 理由
onestone01 + 30 非常感谢百忙中给与帮助!

查看全部评分

 楼主| 发表于 2020-7-15 15:32:05 | 显示全部楼层
afan 发表于 2020-7-15 15:28
匹配后面那个示例

非常感谢!我先试试
发表于 2020-7-15 15:33:51 | 显示全部楼层
这个我也觉得不可靠吧。
 楼主| 发表于 2020-7-15 15:38:35 | 显示全部楼层
本帖最后由 onestone01 于 2020-7-15 15:43 编辑
afan 发表于 2020-7-15 15:28
匹配后面那个示例

可能我表述的不太清楚正则实在不太懂。
需要提取这两个(实际可能包含多个文件名)红色字符: 610031002E00650078006500(转换后为 a1.exe;  630073002E0064006C006C00 (转换后为cs.dll




发表于 2020-7-16 12:50:01 | 显示全部楼层
还没解决?
Highlight code by AuREHelper
5C00((?:(?!5C00)..)+?)0003


评分

参与人数 1金钱 +30 收起 理由
onestone01 + 30 非常感谢

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-19 21:03 , Processed in 0.076855 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表