![在Notepad++的查找结果窗口中,显示多行结果](https://linux22.com/image/1530945/%E5%9C%A8Notepad%2B%2B%E7%9A%84%E6%9F%A5%E6%89%BE%E7%BB%93%E6%9E%9C%E7%AA%97%E5%8F%A3%E4%B8%AD%EF%BC%8C%E6%98%BE%E7%A4%BA%E5%A4%9A%E8%A1%8C%E7%BB%93%E6%9E%9C.png)
我使用 Notepad++ 编写了一个多行查找正则表达式。该行以 INFO 开头,以已知数字模式结尾。当我输入正则表达式后单击“查找”时,主窗口中会突出显示正确的结果。
对于我的用例,我想find all in open documents
使用相同的正则表达式。问题是当我这样做时,查找结果窗口仅显示多行匹配的第一行。为了真正有用,我需要在查找结果窗口中显示整个匹配(在我的情况下几乎总是 2 行)。我希望获取查找结果屏幕的输出并将其用作超出此问题范围的另一个过程的输入。
那么我该如何显示整个多行匹配。我可以想到如何在脚本或编程语言中将其作为程序来执行此操作,但是如何在 Notepad++ 中执行此操作?
答案1
否定回答:虽然可以通过设置正则表达式选项“。匹配换行符”来搜索并选择多个文件中的多行,但“查找结果”窗格将仅列出每个找到的结果的第一行。
此行为是 Notepad++ 内置的,无法更改。我也查看了列出的插件,它们都无法更改它。
您可以将此作为功能请求提出 Notepad++ 社区,但我看不到任何可以立即解决您的问题的方法。
答案2
尝试以下操作。假设您的文档以单词 INFO 开头,以 999 结尾。
你的正则表达式将是:
INFO.+?999
为了使它能够与多线在搜索窗口中,使用勾选旁边正则表达式,有一个复选框显示. 匹配换行符。您需要选择它才能使其工作。
ps 检查它是否适用于我的 Notepad++ 7.5.1 版本
ps2 查找仅返回每次出现的第一行。因此,如果您的匹配从第 5 行开始,但在第 10 行结束,则它将在搜索窗口中显示从第 5 行开始。您无法在应用程序中更改该行为。
答案3
设法通过两步解决它:第一步:
- 匹配多行
- 用一些代替它标记并保留有用的信息第二步:
- “在文档中查找” = 查找标记的行 [在此处输入图像描述][1]
[1]: 参见工作样本https://i.stack.imgur.com/ClQjU.png
答案4
有一个黑客式的来实现这一点的方法。
- 在查找对话框中,转到标记选项卡。
- 点击标记全部
- 现在点击复制标记的文本
- 打开新标签页,然后粘贴复制的文本
现在,您将看到每个搜索结果匹配的所有行,只是它不会显示在窗口中Search results
。另一个缺点是,这仅适用于当前文档,无法Find All in All Opened Documents
满足您的要求。
以下 gif 显示在 zookeeper 日志上执行这些步骤 (关联)。