У меня есть скрипт PowerShell, который должен сравнивать два файла .reg (файлы экспорта reg). Я хочу предоставить имя ключа реестра и сравнить значение этого ключа в этих файлах.
Моя проблема с регулярным выражением, чтобы выбрать только значение конкретного ключа ...
Проблема в том, что выводом является не только значение ключа, который я предоставляю, но также и все последующие строки в regfile ... (вот где я терплю неудачу с RegEx)
содержимое regfile (пример для тестирования):
"DWORD"=dword:fefefeff
"String"="agnhqorewthosdgfalsfalsbvoweirnfapjfpaqwogfjasgj"
"DWORD2"=dword:fefefefe
"qword"=hex(b):fa,ad,df,fa,ad,df,fa,ad
Код PowerShell:
$RegKeyName = "DWORD2"
$regex = ('"{0}"=(.*(?:(?!\n"[^\n"]+"=)\n.*)*)' -f [RegEx]::Escape($RegKeyName))
[regex]::Matches($regfilecontent ,$regex) | foreach { $_.groups[1].value }
ожидаемый результат, например, $ RegKeyName = DWORD2 должен быть:
DWORD: fefefefe
фактический результат:
DWORD: fefefefe
"QWORD" = шестигранное (б): фа, объявление, ДФ, фа, объявление, ДФ, фа, объявление