2015-06-12 54 views
2

我找不到匹配BBEdit中不包含日期的整行的正確grep表達式,儘管發現了許多「匹配...不包含」主題這在網絡上...匹配行中不包含BBEdit中的模式與Grep

我有這樣的文本文檔:

Some Text 
Some more text,even more text,2015-06-17,2015-06-20 
A third line of text 
Last line of text, 2015-06-17 

這個表達式將選擇包含日期的引用的所有行,在4位數字的形式+「 - 」 + 2個位數+ 「 - 」+ 2個數字

^.*\d\d\d\d-\d\d-\d\d.*$ 

我想完全相反,意圖刪除所有不包含日期引用的行。我曾嘗試過如下解決方案:

^.*[^\d\d\d\d-\d\d-\d\d].*$ 

但迄今爲止沒有成功。有人能指引我朝着正確的方向嗎? 謝謝。

回答

4

的BBEdit支持Perl樣式的模式擴展線(見第183頁手冊)including negative lookaheads(?!...)

我相信這會做你想要什麼:

^((?![\d\d\d\d-\d\d-\d\d]).)*$ 
+0

謝謝。完美工作。 – BMM

+0

這當然有訣竅,但可以多用一點解釋。我試圖做類似的事情,知道我需要一個負面的預測,但是創建了這樣的東西:'^。*(?![^ \ d \ d \ d \ d- \ d \ d- \ d \ d]) 。* $'直到找到這個頁面。顯然,我並不完全理解使用附加括號以及爲什麼'。*'在開始時不需要。如果任何人都可以詳細闡述評論或編輯答案,我會很感激。 –

1

一種選擇

"[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" 

如果要排除不具有本場比賽的易於使用的grep -v

+0

感謝。您的建議使我簡化了表達式:[0-9] {4} - [0-9] {2} - [0-9] {2}'。不過,我不能使用-v選項,因爲我在其搜索和替換窗口中使用了BBEdit特定的grep功能。 – BMM