使用 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>
这非常适合搜索存在 string1
或 string2
的文件。我现在需要的是在大量文件中搜索 两个存在的字符串 。即,我需要使用 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 Folder
或 Add Open Files
或 Add 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 Context
(Use Buffer
之前的那个)选项已启用。这将显示匹配的确切行。现在点击右边的Find
。
这是我得到的输出
查看行 1315
和 1316
的背景颜色差异(出现在左侧)。 1316
是 designation
文件中的匹配行
这是最后一部分的图片
当我使用这个正则表达式时,总共打开了 6 个文件
用于查找文件中任意位置的字符串
使用
(?=[\s\S]*string1)(?=[\s\S]*string2)[\s\S]+
但如果行数增加,它会杀死 sublime。
如果您只需要查找两个单词,与上面相比,下面的方法会非常快
(\bstring1\b[\S\s]*\bstring2\b)|(\bstring2\b[\S\s]*\bstring1\b)
我之前的这个(类似)问题 Search for multiple strings in several files with Sublime 3 was answered 使用正则表达式 OR
运算符在 SublimeText 的多个文件中搜索多个字符串的方法:
Find: (string1|string2)
Where: <open folders>
这非常适合搜索存在 string1
或 string2
的文件。我现在需要的是在大量文件中搜索 两个存在的字符串 。即,我需要使用 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 Folder
或 Add Open Files
或 Add 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 Context
(Use Buffer
之前的那个)选项已启用。这将显示匹配的确切行。现在点击右边的Find
。
这是我得到的输出
查看行 1315
和 1316
的背景颜色差异(出现在左侧)。 1316
是 designation
文件中的匹配行
这是最后一部分的图片
当我使用这个正则表达式时,总共打开了 6 个文件
用于查找文件中任意位置的字符串
使用
(?=[\s\S]*string1)(?=[\s\S]*string2)[\s\S]+
但如果行数增加,它会杀死 sublime。
如果您只需要查找两个单词,与上面相比,下面的方法会非常快
(\bstring1\b[\S\s]*\bstring2\b)|(\bstring2\b[\S\s]*\bstring1\b)