C# 在C中解析Registry.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.REG文件以获取以下信息:

  • 键名
  • 值类型
  • 价值数据
我已经尝试过这个示例项目 这正是我想要的,但它无法正确处理某些边缘情况。 例如,它不处理转义引号。在reg文件中,转义引号如下\“

我用于检查的测试注册表文件:

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 ]*("".+""|@)=(""(?:[^""\\]|\\.)*""|[^""]+)";