我正在尝试查找文件中的所有文本块,其中包含一个字符串,匹配以下正则表达式:D[:/\]Apps[/\] 并且被双换行符包围。
例如在本文中:
00,36,00,31,00,39,00,33,00,34,00,65,00,30,00,38,00,39,00,00,00,00,00,00,00,\
00,00,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\D:/Apps/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/Architecture Tools/GraphProviderPackage/Microsoft.VisualStudio.GraphProviderPackage.dll]
"Status"=dword:00000003
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\D:/Programs/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/Architecture Tools/GraphProviderPackage/Microsoft.VisualStudio.GraphProviderPackage.dll\0]
"Scenario"=dword:00000020
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2....
我想要被发现的是:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\D:/Apps/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/Architecture Tools/GraphProviderPackage/Microsoft.VisualStudio.GraphProviderPackage.dll]
"Status"=dword:00000003
请记住,
"Status"=dword:00000003
在另一条线上
到目前为止,这是我得到的最接近的:
\r?\n\r?\n(([\s\S](?!\r?\n\r?\n))*)D[:\/\\]*Apps[\/\\]*(([\s\S](?!\r?\n\r?\n))*).\r?\n\r?\n
但是 Notepad++ 说我的正则表达式无效,即使在 regex101 中它按照我想要的方式匹配它。
\R\R\K\[.+D:/Apps/.+(?=\R\R)
. matches newline
解释:
\R\R # 2 any kind of linebreak
\K # forget them
\[ # openning square bracket
.+ # 1 or more any character but newline
D:/Apps/ # literally
.+ # 1 or more any character but newline
(?=\R\R) # poritive lookahead, make sure we have 2 linebreak after
截图: