2009-12-01 85 views
11

我一直在用RegEx備忘單幫助解決這個問題,試圖找出如何做到這一點,但我放棄了...我有這個冗長的文件打開記事本++,並希望刪除所有不以數字開頭的行(0..9)。我會使用N ++的查找/替換功能。我只提到這一點,因爲我不確定Regex的實現是N ++使用的...謝謝正則表達式:刪除不以數字開頭的行

例子。從下面的文字:

1hello 
foo 
2world 
bar 
3! 

我想提取

1hello 
2world 
3! 

不是:做一個發現

1hello 

2world 

3! 

/定期表達式替換。

+1

我已經使用這個http://stackoverflow.com/a/10731750 工作像一個魅力 – 2014-09-23 08:39:13

回答

21

您可以用^[^0-9].*清除那些行,但它會留下空行。

Notepad ++使用閃爍體,並使用其正則表達式引擎來匹配這些。

\ r和\ N,因爲在 Scintilla的從不匹配,正則表達式搜索 由每行(剝離的 結束線字符)線。

http://www.scintilla.org/SciTERegEx.html

要清理這些空行,唯一的辦法就是選擇擴展模式,並取代\ n \ n轉換爲\ N,如果您在Windows模式改變\ r \ n \ r \ n到\ r \ n

+0

哦,好吧,我想我會滿意這個解釋。 – 2009-12-01 14:11:45

+4

我後來學會了擺脫Windows上空白行的巧妙把戲:用\ n \ r替換\ n。這樣\ r \ n \ r \ n變成\ r \ n。任何數量的空白喜歡將縮短爲\ r \ n。 – 2012-10-24 08:15:16

+0

請注意PeterPerháč的書籤答案。這正是我登陸此頁面時所需要的。 (我將此評論添加到接受的答案中,因爲在問題第一次得到答覆時,此功能可能無法在Notepad ++中使用。) – jcadcell 2013-01-23 17:54:29

7

[^0-9]是一個正則表達式,幾乎可以匹配除數字之外的任何內容。如果您說^[^0-9],則在大多數正則表達式系統中,將它「錨定」到行首。如果您想包括該行的其餘部分,請使用^[^0-9].+

+0

也工作,但留下了大量的空白行。我如何捕捉換行符? – 2009-12-01 14:01:59

+0

您是否嘗試在表達式末尾添加'[\ r \ n] *'? – 2009-12-01 14:02:52

+0

看起來這隻能在np ++的「擴展模式」下工作,而不能在正則表達式模式下工作。 – moxn 2009-12-01 14:04:01

6

^[^\d].*標記了第一個字符不是數字的整行。檢查數字前面是否真的沒有空格。否則,你必須使用不同的表達式。

UPDATE: 您將不得不在兩個步驟中完成。首先清空不以數字開頭的行。然後刪除擴展模式下的空行。

+0

只要找到所有不以數字開頭的行,但是當我執行搜索/替換時,搜索^ [^ \ d]。*替換爲空白,我仍然留有很多空行。我如何讓你的正則表達式捕獲換行符? – 2009-12-01 13:58:52

+0

您可以先嚐試刪除所有帶數字的行。然後你可以切換到「擴展模式」。我測試了它,它適用於我在這裏用'\ r \ n'查找換行符。然後用nothgin替換它們。 – moxn 2009-12-01 14:06:55

+0

是的,這是一個經過時間考驗的方式來做到這一點,但我希望這一切都可以一步完成。也許如果我使用其他編輯器,但它是npp,所以我會滿足於這樣做兩個步驟:)乾杯 – 2009-12-01 14:16:55

1

我不確定你在問什麼。但用於查找帶有數字開頭的行的reg exp將是 ^ \ d。* 您可以刪除與上述匹配的所有行,或者交替保留與此表達式匹配的所有行: ^ [^ \ d ]。*

+0

我想弄清楚我的問題哪部分不清楚。我會編輯它,但我想我很清楚在詢問如何「刪除不以數字開頭的行」? – 2009-12-01 14:00:31

+0

我不清楚的是你如何去除。現在我明白你正在使用搜索和替換。嘗試搜索 ^ [^ \ d]。*並替換爲\ b(這是退格字符或備選名稱*,這對我而言過去有效) 搜索^ [^ \ d]。* \ R和(R必須是大寫!)

如果後者是「貪婪」的,它會刪除第一次匹配後的所有行,然後您可以嘗試替換^ [^ \ d] [^ \ R] * \ R woth什麼也沒有 – codekitty 2009-12-01 14:11:46

3

也可以使用記事本++中的書籤技術。不久之前,我開始從這個功能中受益(長時間存在,但最近纔在UI中更加明顯)。

只需調出查找對話框,爲不以數字^\D.*$開頭的行鍵入正則表達式,並選擇標記全部。這會將藍色圓圈,如彈珠放置在左邊的排水溝中 - 這些是線條書籤。然後只需從主菜單中選擇搜索 - >書籤 - >刪除書籤行。

書籤很酷,您可以通過簡單地選擇複製書籤行,打開新文檔和粘貼行來提取這些行。我在審閱日誌文件時有時會使用這種技術。

+0

偉大的提示!要刪除不匹配的行,還需要「刪除未標記的行」。我經常可以很容易地正則表達我想要保留的東西;現在很容易刪除其餘的。謝謝! – jcadcell 2013-01-23 17:35:00

相關問題