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

34

我知道如何使用Sublime 3同时在多个文件中搜索单个字符串(在此处解释:这里)。

我需要做的是在多个文件中搜索多个字符串。我尝试过进入查找文件并设置:

Field:  string1 \& string2
Where: /path_to_folder_containing_the_files_I_want_to_ search/

(其中string1string2是我想要搜索的字符串),但似乎不起作用。

这种方法是否可行?


Gabriel,我认为你的问题在http://superuser.com上会更好。 - samy
@samy 为什么?这里有成千上万关于 Sublime 的问题,只需点击标签即可查看。 - Gabriel
2
是的,我同意;对我来说,这似乎是关于一般计算机软件的问题,而不是编程 - 所以我认为在superuser上使用sublime标签是最合适的:http://superuser.com/questions/tagged/sublime-text-3 - samy
3个回答

52

刚看到这个老问题,想分享我的解决方案,希望对未来的某个人有用。

Sublime支持在所有打开的文件夹中搜索,并且可以使用正则表达式。因此,您可以将要搜索的所有文件夹都打开或添加到项目中,并使用正则表达式搜索多个关键字。在您的情况下,应该是以下内容(确保勾选正则表达式框 .* 图标):

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

当在4个或更多字符串上使用正则表达式替换'string1','string2'时,正则表达式会崩溃并显示错误:“匹配正则表达式的复杂度超出了预定义的限制。尝试重构正则表达式,使状态机所做的每个选择都是明确的。”这是否与此类型的搜索有关? - john
1
@john:你能发一下你的正则表达式样例吗?我刚试了一下简单的四个选项,在我的电脑上运行得很好。 - Sherzod
4
显然,我对每个字符串逐一进行了正则表达式匹配,而没有将整个集合作为一个整体来封装,这导致了崩溃。例如,我想要这样做:^.*(?:string1|string2|string3).*$ - john

6
我使用以下内容:

检查正则表达式

Find: (string1.*string2)

Where: *.php

1
只有当文件中同时包含这两个字符串并且顺序正确时,此方法才有效。(另外,在某些正则表达式场景中,点号不匹配换行符...不确定Sublime的实现情况)最好使用 |(或运算符):(string1|string2)。 - David Hempy
但是如果我想要找到两个字符串,我的解决方案将会起作用。 - koshin
1
如果你想按照那个顺序找到它们,是的。但是如果一个文件把它们反过来:string2...string1,这个解决方案将无法匹配。 - David Hempy

0

我在Sublime Text2上尝试过这个方法,所以在Sublime Text3上也应该适用。

字段:string1 string2 string3 string4 位置:/path_to_folder_containing_the_files_I_want_to_search/

注意:取消选中“.*”,这意味着正则表达式,并选中“”,这意味着查找整个单词。

这将在所提到的文件夹中的所有文件中搜索模式“string1 string2 string3 string4”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接