kk_lee69 发表于 2014-4-28 02:13:49

求助 利用正则 将注册表汇出的REG 数据分成 一段一段的

本帖最后由 kk_lee69 于 2014-4-28 02:19 编辑

現有 匯出的登錄檔資料 內容 如下:

Windows Registry Editor Version 5.00


@=hex:02,FF,01,25,00,32,00,44,40,05,83,99,41,62,cf,01,00,00,00,00,00,00,00,\
00,30,6d,b3,22,bc,9f,cc,01,00,FF,FF,FF,FF,00,00,00,90,71,19,f3,01,a2,cc,01,\
"SOFT"=hex:02,FF,01,25,00,32,00,44,40,05,83,99,41,62,cf,01,00,00,00,00,00,00,00,\
00,30,6d,b3,22,bc,9f,cc,01,00,FF,FF,FF,FF,00,00,00,90,71,19,f3,01,a2,cc,01,\
f4,01,00,00,01,02,00,00,14,02,00,00,00,00,FF,00,00,00,12,00,01,00,00,00,00,\
00,00,00,FF,25,35,66
"DEBUG"=hex:00,00,00,00,bc,00,00,00,02,00,01,00,bc,00,00,00,1a,00,00,00,00,00,00,\
00,d8,00,00,00,00,00,00,00,00,00,00,00,d8,00,00,00,18,00,00,00,00,00,00,00,\
f0,00,00,00,00,00,00,00,00,00,00,00,f0,00,00,00,00,00,00,00,00,00,00,00,f0,\
00,58,00,03,00,00,00,00,00,14,00,5b,03,02,00,01,01,00,00,00,00,00,01,00,00,\
00,00,00,00,18,00,ff,07,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,\
00,00,00,24,00,44,00,02,00,01,05,00,00,00,00,00,05,15,00,00,00,80,cb,af,71,\
92,18,ec,25,2e,1c,29,2d,f4,01,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,\
02,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,41,00,64,00,6d,00,\
69,00,6e,00,69,00,73,00,74,00,72,00,61,00,74,00,6f,00,72,00,18,00,a1,7b,06,\
74,fb,96,66,81,2f,00,b2,7d,df,57,84,76,67,51,fa,5e,33,5e,36,62,ff,ff,ff,ff,\
00,00,00,02,00,01,00,02,00,01,00,d3,2d,b2,55,b6,c9,cd,1b,43,8f,e1,1b,50,d0,\
76,c4,02,00,01,00,02,00,01,00


求助 利用正則 將上面的檔案分成
@=hex:02,FF,01,25,00,32,00,44,40,05,83,99,41,62,cf,01,00,00,00,00,00,00,00,\
00,30,6d,b3,22,bc,9f,cc,01,00,FF,FF,FF,FF,00,00,00,90,71,19,f3,01,a2,cc,01,\
這樣的一段   

"SOFT"=hex:02,FF,01,25,00,32,00,44,40,05,83,99,41,62,cf,01,00,00,00,00,00,00,00,\
00,30,6d,b3,22,bc,9f,cc,01,00,FF,FF,FF,FF,00,00,00,90,71,19,f3,01,a2,cc,01,\
f4,01,00,00,01,02,00,00,14,02,00,00,00,00,FF,00,00,00,12,00,01,00,00,00,00,\
00,00,00,FF,25,35,66
這樣一段 字串

"DEBUG"=hex:00,00,00,00,bc,00,00,00,02,00,01,00,bc,00,00,00,1a,00,00,00,00,00,00,\
00,d8,00,00,00,00,00,00,00,00,00,00,00,d8,00,00,00,18,00,00,00,00,00,00,00,\
f0,00,00,00,00,00,00,00,00,00,00,00,f0,00,00,00,00,00,00,00,00,00,00,00,f0,\
00,58,00,03,00,00,00,00,00,14,00,5b,03,02,00,01,01,00,00,00,00,00,01,00,00,\
00,00,00,00,18,00,ff,07,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,\
00,00,00,24,00,44,00,02,00,01,05,00,00,00,00,00,05,15,00,00,00,80,cb,af,71,\
92,18,ec,25,2e,1c,29,2d,f4,01,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,\
02,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,41,00,64,00,6d,00,\
69,00,6e,00,69,00,73,00,74,00,72,00,61,00,74,00,6f,00,72,00,18,00,a1,7b,06,\
74,fb,96,66,81,2f,00,b2,7d,df,57,84,76,67,51,fa,5e,33,5e,36,62,ff,ff,ff,ff,\
00,00,00,02,00,01,00,02,00,01,00,d3,2d,b2,55,b6,c9,cd,1b,43,8f,e1,1b,50,d0,\
76,c4,02,00,01,00,02,00,01,00

這樣的一段字串

已知 @與 "SOFT"與 "DEBUG" 是固定的其他內容 是不固定的....

fuldho 发表于 2014-4-28 08:28:58

已知 @與 "SOFT"與 "DEBUG" 是固定的
可以字符串截取

kk_lee69 发表于 2014-4-28 14:10:50

回复 2# fuldho

感謝回復這個是一個方法只是覺得 想看看正則怎麼做???

我 試著使用    "SOFT"[\=\w\s][\S\s]*"DEBUG"

可是這樣 只可以抓到"SOFT" 開始的資料而且"DEBUG"也會跑出來
想把    "DEBUG"拿掉卻不知道方法 ~~~呵呵

看來正則真不是 一般人可以理解的@@

fuldho 发表于 2014-4-28 14:38:17

$sR = StringRegExp($Str, '("SOFT"[\=\w\s][\S\s]*)("DEBUG")',1)
MsgBox(4096, "正则测试" , $sR)

lixiaolong 发表于 2014-4-28 14:39:47

本帖最后由 lixiaolong 于 2014-4-28 14:45 编辑

回复 1# kk_lee69

试试这个吧.#include <Array.au3>

$Str = _
'Windows Registry Editor Version 5.00' & @CRLF & _
'' & @CRLF & _
'' & @CRLF & _
'@=hex:02,FF,01,25,00,32,00,44,40,05,83,99,41,62,cf,01,00,00,00,00,00,00,00,\' & @CRLF & _
'00,30,6d,b3,22,bc,9f,cc,01,00,FF,FF,FF,FF,00,00,00,90,71,19,f3,01,a2,cc,01,\' & @CRLF & _
'"SOFT"=hex:02,FF,01,25,00,32,00,44,40,05,83,99,41,62,cf,01,00,00,00,00,00,00,00,\' & @CRLF & _
'00,30,6d,b3,22,bc,9f,cc,01,00,FF,FF,FF,FF,00,00,00,90,71,19,f3,01,a2,cc,01,\' & @CRLF & _
'f4,01,00,00,01,02,00,00,14,02,00,00,00,00,FF,00,00,00,12,00,01,00,00,00,00,\' & @CRLF & _
'00,00,00,FF,25,35,66' & @CRLF & _
'"DEBUG"=hex:00,00,00,00,bc,00,00,00,02,00,01,00,bc,00,00,00,1a,00,00,00,00,00,00,\' & @CRLF & _
'00,d8,00,00,00,00,00,00,00,00,00,00,00,d8,00,00,00,18,00,00,00,00,00,00,00,\' & @CRLF & _
'f0,00,00,00,00,00,00,00,00,00,00,00,f0,00,00,00,00,00,00,00,00,00,00,00,f0,\' & @CRLF & _
'00,58,00,03,00,00,00,00,00,14,00,5b,03,02,00,01,01,00,00,00,00,00,01,00,00,\' & @CRLF & _
'00,00,00,00,18,00,ff,07,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,\' & @CRLF & _
'00,00,00,24,00,44,00,02,00,01,05,00,00,00,00,00,05,15,00,00,00,80,cb,af,71,\' & @CRLF & _
'92,18,ec,25,2e,1c,29,2d,f4,01,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,\' & @CRLF & _
'02,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,41,00,64,00,6d,00,\' & @CRLF & _
'69,00,6e,00,69,00,73,00,74,00,72,00,61,00,74,00,6f,00,72,00,18,00,a1,7b,06,\' & @CRLF & _
'74,fb,96,66,81,2f,00,b2,7d,df,57,84,76,67,51,fa,5e,33,5e,36,62,ff,ff,ff,ff,\' & @CRLF & _
'00,00,00,02,00,01,00,02,00,01,00,d3,2d,b2,55,b6,c9,cd,1b,43,8f,e1,1b,50,d0,\' & @CRLF & _
'76,c4,02,00,01,00,02,00,01,00'

Local $Test = StringRegExp($Str, '(?s)(?:@|"[^"]+")[^"]+(?:\r|$)', 3)

_ArrayDisplay($Test, UBound($Test))可能条件变了不管用。

jiangtaox1 发表于 2014-4-28 15:19:00

正则真的不是一般人能理解的!
页: [1]
查看完整版本: 求助 利用正则 将注册表汇出的REG 数据分成 一段一段的