本帖最后由 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))
|