Notepad++ 用于双换行符包围的文本的正则表达式

问题描述 投票:0回答:1

我正在尝试查找文件中的所有文本块,其中包含一个字符串,匹配以下正则表达式: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 中它按照我想要的方式匹配它。

notepad++ boost-regex
1个回答
1
投票
  • Ctrl+F
  • 查找内容:
    \R\R\K\[.+D:/Apps/.+(?=\R\R)
  • TICK火柴盒
  • TICK环绕
  • SELECT 正则表达式
  • TICK
    . 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

截图:

© www.soinside.com 2019 - 2024. All rights reserved.