2016-04-25 51 views
4

Search for multiple strings in several files with Sublime 3的這以前(類似)的問題是answered一種方法來搜索在SublimeText多個文件多個字符串,使用正則表達式OR操作:搜索使用AND

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

這適用於搜索文件,其中或者string1string2存在。我現在需要的是搜索的大量文件,這兩個字符串都是。即,我需要使用AND運營商。

我環顧四周,這個問題Regular Expressions: Is there an AND operator?也是這一個Regex AND operator及以下配方上來:

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

但他們沒有工作。

所以問題是:如何在SublimeText中一次搜索多個文件中的多個字符串?

(我使用SublimeText 3103)

添加字符串不一定在同一行。它們可以位於每個文件的任何位置。例如,此文件:

string1 dfgdfg d dfgdf 

sadasd 
asdasd 

dfgdfg string2 dfgdfg 

應觸發匹配。

+0

實際上這是在以前的匹配,這是highlighting..its不是爲我工作無論是。 。只能在當前文件中找到 – rock321987

+0

按下'Shift + Ctrl + F'並輸入正則表達式。它在那裏找到正確 – rock321987

+0

哪個正則表達式?你用什麼文件來測試它? – Gabriel

回答

6

打開崇高的文本,然後按

+ 按Ctrl +˚F

,或者點擊Files選項卡下的Find in Files選項。以上是此選項的鍵盤快捷鍵。當您按下上面鍵,這些都是下列選項

enter image description here

當您選擇......從上面按鈕,可以得到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

enter image description here

確保Use Buffer選項啓用(一個剛Find之前)。它會在新文件中顯示匹配。還要確保啓用Show Context(就在Use Buffer之前)選項。這將顯示匹配的確切線。現在點擊右側的Find

這裏是我得到

enter image description here

見線13151316的背景顏色的差異(在左側顯示)輸出。 1316designation文件

匹配行這是最後一部分

enter image description here

有總,而我用這個正則表達式

對於文件的任何地方發現的字符串,就開了6個文件的圖像

使用

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

但是如果行數增加,它會殺死崇高。

如果只有兩個,你需要找到的話,下面將比較工作超快以上

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

你用正則表達式'(?=。* def)(?=。* s)'搜索哪兩個字符串? – Gabriel

+0

@Gabriel是的,我正在搜索字符串'def'和字符串's' – rock321987

+0

嘗試在以下模擬文件中搜索「(?=。* string1)(?=。* string2)'http://pastebin.com/Tq6YJUfC它不會工作,它應該。我不確定你的線路是幹什麼的,但這不是我需要的。 – Gabriel