C# 在C中解析Registry.REG文件#
我需要解析Windows.REG文件以获取以下信息:C# 在C中解析Registry.REG文件#,c#,regex,C#,Regex,我需要解析Windows.REG文件以获取以下信息: 键名 值类型 价值数据 我已经尝试过这个示例项目 这正是我想要的,但它无法正确处理某些边缘情况。 例如,它不处理转义引号。在reg文件中,转义引号如下\“ 我用于检查的测试注册表文件: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\SOFTWARE\SampleTest\Key1] @="This is the default value. 我爱喝咖啡" "FilePat
- 键名
- 值类型
- 价值数据
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\SampleTest\Key1]
@="This is the default value. 我爱喝咖啡"
"FilePath"="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""
"我爱喝咖啡"="ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
"BinaryData1"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,11,11,11,11,11,\
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,\
11,11,11,11,11,11,11,11,11,11,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,\
22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,33,33,33,33,33,33,33,33,\
33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,44,\
44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,\
44,44,44,44,44,44,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,\
55,55,55,55,55,55,55,55,55,55,55,55,55,66,66,66,66,66,66,66,66,66,66,66,66,\
66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,77,77,77,77,77,\
77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,\
77,77,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,\
88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,99,99,99,99,99,99,99,99,\
99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,aa,\
aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,\
aa,aa,aa,aa,aa,aa,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,\
bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,\
cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,dd,dd,dd,dd,dd,\
dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,\
dd,dd,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,\
ee,ee,ee,ee,ee,ee,ee,ee,ee,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
"DwordMin"=dword:00000000
"SingleByte"=hex:ab
"DwordMax"=dword:ffffffff
"DwordSpecial"=dword:abcdef12
"QwordMin"=hex(b):00,00,00,00,00,00,00,00
"QwordMax"=hex(b):ff,ff,ff,ff,ff,ff,ff,ff
"QwordSpecial"=hex(b):12,f0,ce,cd,ab,ef,cd,ab
"MultiStringList"=hex(7):4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,\
69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,31,00,00,\
00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,00,\
20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,32,00,00,00,4d,00,75,00,6c,\
00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,00,\
6c,00,75,00,65,00,20,00,23,00,33,00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,\
00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,\
20,00,23,00,34,00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,\
00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,35,00,\
00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,\
00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,36,00,00,00,4d,00,75,00,\
6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,\
00,6c,00,75,00,65,00,20,00,23,00,37,00,00,00,4d,00,75,00,6c,00,74,00,69,00,\
20,00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,\
00,20,00,23,00,38,00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,\
72,00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,39,\
00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,\
67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,31,00,30,00,00,00,00,\
00
"ExpandableString"=hex(2):25,00,57,00,49,00,4e,00,44,00,49,00,52,00,25,00,5c,\
00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,\
73,00,25,00,5c,00,25,00,54,00,45,00,4d,00,50,00,25,00,00,00
"SpecialChar"="~`!@#$%^&*()_+[]\\{}|;',./[]\\"
[HKEY_CURRENT_USER\SOFTWARE\SampleTest\Key1\Key2]
@="Key2 Default VAlue"
[HKEY_CURRENT_USER\SOFTWARE\SampleTest\Key1\Key2\Key3]
@="Key 3 Default VAlue"
[HKEY_CURRENT_USER\SOFTWARE\SampleTest\Key1\New Key #1]
"~!@#$%^&*()_+{}|[]\\;',./<>?;'\""="strange reg key name"
[HKEY_CURRENT_USER\SOFTWARE\SampleTest\Key1\New Key #2]
[HKEY_CURRENT_USER\SOFTWARE\SampleTest\KEY~`!@#$%^&*()-+=[]{}|;'":<>?,./]
"Strange2"="More strange data"
[HKEY_LOCAL_MACHINE\SOFTWARE\SampleTest]
[HKEY_LOCAL_MACHINE\SOFTWARE\SampleTest\Key1]
@="This is the default value. 我爱喝咖啡"
"我爱喝咖啡"="I love cofeeeeeeeeeeeeeeeeeeeeeeeeeeeABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
"BinaryData1"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,11,11,11,11,11,\
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,\
11,11,11,11,11,11,11,11,11,11,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,\
22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,33,33,33,33,33,33,33,33,\
33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,44,\
44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,\
44,44,44,44,44,44,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,\
55,55,55,55,55,55,55,55,55,55,55,55,55,66,66,66,66,66,66,66,66,66,66,66,66,\
66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,77,77,77,77,77,\
77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,\
77,77,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,\
88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,99,99,99,99,99,99,99,99,\
99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,aa,\
aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,\
aa,aa,aa,aa,aa,aa,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,\
bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,bb,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,\
cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,dd,dd,dd,dd,dd,\
dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd,\
dd,dd,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,ee,\
ee,ee,ee,ee,ee,ee,ee,ee,ee,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
"DwordMin"=dword:00000000
"SingleByte"=hex:ab
"DwordMax"=dword:ffffffff
"DwordSpecial"=dword:abcdef12
"QwordMin"=hex(b):00,00,00,00,00,00,00,00
"QwordMax"=hex(b):ff,ff,ff,ff,ff,ff,ff,ff
"QwordSpecial"=hex(b):12,f0,ce,cd,ab,ef,cd,ab
"MultiStringList"=hex(7):4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,\
69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,31,00,00,\
00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,00,\
20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,32,00,00,00,4d,00,75,00,6c,\
00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,00,\
6c,00,75,00,65,00,20,00,23,00,33,00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,\
00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,\
20,00,23,00,34,00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,\
00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,35,00,\
00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,\
00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,36,00,00,00,4d,00,75,00,\
6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,\
00,6c,00,75,00,65,00,20,00,23,00,37,00,00,00,4d,00,75,00,6c,00,74,00,69,00,\
20,00,53,00,74,00,72,00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,\
00,20,00,23,00,38,00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,\
72,00,69,00,6e,00,67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,39,\
00,00,00,4d,00,75,00,6c,00,74,00,69,00,20,00,53,00,74,00,72,00,69,00,6e,00,\
67,00,20,00,56,00,61,00,6c,00,75,00,65,00,20,00,23,00,31,00,30,00,00,00,00,\
00
"ExpandableString"=hex(2):25,00,57,00,49,00,4e,00,44,00,49,00,52,00,25,00,5c,\
00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,\
73,00,25,00,5c,00,25,00,54,00,45,00,4d,00,50,00,25,00,00,00
"FilePath"="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""
"SpecialChar"="~`!@#$%^&*()_+[]\\{}|;',./[]\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\SampleTest\Key1\Key2]
@="Key2 Default VAlue"
[HKEY_LOCAL_MACHINE\SOFTWARE\SampleTest\Key1\Key2\Key3]
@="Key 3 Default VAlue"
[HKEY_LOCAL_MACHINE\SOFTWARE\SampleTest\Key1\New Key #1]
"~!@#$%^&*()_+{}|[]\\;',./<>?;'\""="strange reg key name"
[HKEY_LOCAL_MACHINE\SOFTWARE\SampleTest\Key1\New Key #2]
[HKEY_LOCAL_MACHINE\SOFTWARE\SampleTest\KEY~`!@#$%^&*()-+=[]{}|;'":<>?,./]
"Strange2"="More strange data"
相关代码正在使用正则表达式:
/// <summary>
/// Creates a flat Dictionary using given search pattern
/// </summary>
/// <param name="content">The content string to be parsed</param>
/// <returns>A Dictionary with retrieved keys and remaining content</returns>
private Dictionary<String, String> NormalizeValuesDictionary(String content)
{
string searchPattern = @"^[\t ]*("".+""|@)=(""[^""]*""|[^""]+)";
MatchCollection matches = Regex.Matches(content, searchPattern, RegexOptions.Multiline);
Dictionary<String, String> dictKeys = new Dictionary<string, string>();
foreach (Match match in matches)
{
try
{
//Retrieve key
String sKey = match.Groups[1].Value;
//Retrieve value
String sValue = match.Groups[2].Value;
//Removing the ending CR
while (sKey.EndsWith("\r\n"))
{
sKey = sKey.Substring(0, sKey.Length - 2);
}
if (sKey == "@")
sKey = "";
else
sKey = StripeLeadingChars(sKey, "\"");
while (sValue.EndsWith("\r\n"))
{
sValue = sValue.Substring(0, sValue.Length - 2);
}
if (dictKeys.ContainsKey(sKey))
{
string tmpcontent = dictKeys[sKey];
StringBuilder tmpsb = new StringBuilder(tmpcontent);
if (!tmpcontent.EndsWith(Environment.NewLine)) tmpsb.AppendLine();
tmpsb.Append(sValue);
dictKeys[sKey] = tmpsb.ToString();
}
else
{
dictKeys.Add(sKey, sValue);
}
}
catch (Exception ex)
{
throw new Exception(String.Format("Exception thrown on processing string {0}", match.Value), ex);
}
}
return dictKeys;
}
但现在它不解析非字符串键,即BinaryData1。我正在尝试确定什么正则表达式可以处理所有数据类型,但也可以在字符串中包含转义引号。您可以更新模式以重复匹配,而不是
\
或“
或匹配后跟任何字符的\
^[\t ]*(".+"|@)=("(?:[^"\\]|\\.)*"|[^"]+)
^^^^^^^^^^^^^^
string searchPattern = "^[\\t ]*(\"[^\"\\\\]*(?:\\\\.+[^\"\\\\]*)*\"|@)=(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"+)";
^[\t ]*(".+"|@)=("(?:[^"\\]|\\.)*"|[^"]+)
^^^^^^^^^^^^^^
string searchPattern = @"^[\t ]*("".+""|@)=(""(?:[^""\\]|\\.)*""|[^""]+)";