使用 AND 在 Sublime 3 的多个文件中搜索多个字符串

Search for multiple strings in several files with Sublime 3 using AND

我之前的这个(类似)问题 Search for multiple strings in several files with Sublime 3 was answered 使用正则表达式 OR 运算符在 SublimeText 的多个文件中搜索多个字符串的方法:

Find: (string1|string2)
Where: <open folders>

这非常适合搜索存在 string1string2 的文件。我现在需要的是在大量文件中搜索 两个存在的字符串 。即,我需要使用 AND 运算符。

我查看了这个问题 Regular Expressions: Is there an AND operator? and also this one Regex AND operator 并提出了以下食谱:

(?=string1)(?=string2)
(?=.*string1)(?=.*string2)
(string1 string2)
(string1\&string2)

但其中 none 有效。

所以问题是:如何使用 SublimeText 一次搜索多个文件中的多个字符串?

(我使用的是 SublimeText 3103)

添加:字符串不一定在同一行。它们可以位于每个文件中的任何位置。例如,这个文件:

string1 dfgdfg d dfgdf

sadasd
asdasd

dfgdfg string2 dfgdfg

应该触发匹配。

打开 sublime Text 然后按

Shift+Ctrl+F

或单击 Files 选项卡下的 Find in Files 选项。以上是此选项的键盘快捷方式。当你按下上面的键时,这些是以下选项

当您从上面的 select ... 按钮时,您会得到 6 个选项,它们是 Add FolderAdd Open FilesAdd Open Folders

搜索出现在同一行的字符串

为您的 and 操作使用以下正则表达式

(?=.*string1)(?=.*string2)

我正在使用以下正则表达式

(?=.*def)(?=.*s)\w+ <-- \w+ will help in understanding which line is matched(will see later)

我正在 current open files

范围内搜索

确保 Use Buffer 选项已启用(Find 之前的选项)。它将在新文件中显示匹配项。还要确保 Show ContextUse Buffer 之前的那个)选项已启用。这将显示匹配的确切行。现在点击右边的Find

这是我得到的输出

查看行 13151316 的背景颜色差异(出现在左侧)。 1316designation 文件中的匹配行

这是最后一部分的图片

当我使用这个正则表达式时,总共打开了 6 个文件

用于查找文件中任意位置的字符串

使用

(?=[\s\S]*string1)(?=[\s\S]*string2)[\s\S]+

但如果行数增加,它会杀死 sublime。

如果您只需要查找两个单词,与上面相比,下面的方法会非常快

(\bstring1\b[\S\s]*\bstring2\b)|(\bstring2\b[\S\s]*\bstring1\b)