2011-03-03 139 views

回答

84

查找:

^[#;].* 

替換什麼。 ^指示行的開始,[#;]是與#;匹配的字符類,並且.*與該行中的其他任何內容匹配。

在6.0版之前的Notepad ++版本中,由於其正則表達式引擎的限制,您將無法真正刪除行;替換結果爲每行匹配的空行。換句話說,這樣的:

 
# foo 
; bar 
statement; 

會變成:

 


statement; 

然而,替代將在記事本++ 6.0的工作,如果你添加\r\n\r\n的模式結束,取決於該行結束你的文件正在使用,導致:

 
statement; 
+9

您可以使用搜索模式「擴展」替換空行並找到\ r \ n \ r \ n。如果您將「替換爲」空白,您將刪除空白行。要小心,因爲這會刪除其他空白行,這些空白行並非由第一次替換創建的。 – PaulF

+4

截至記事本++ 6,完整的PCRE正則表達式支持,搜索^(#|;)。* \ r \ n並替換爲空白(當然啓用正則表達式選項)完美運行 – Tao

+0

@Tao:感謝提醒 - 我忘了用6.0的支持更新我所有的Notepad ++答案!我會很快... – BoltClock

2

也許你應該嘗試

^[#;].*$ 

^匹配開始,$結束。

+0

不起作用,[見scintilla](http://www.scintilla.org/SciTERegEx.html)。末尾的字符被刪除。 – stema

5

它可能,但不是直接。

總之,去搜索,使用您的正則表達式,檢查「標記線」,然後單擊「查找所有」。它產生了所有這些行的書籤。

在搜索菜單中有一個「刪除書籤行」瞧。

我在這裏找到了答案(正確答案是第二個,不接受!): How to delete specific lines on Notepad++?

+0

+1爲鏈接 –

5

正如其他人所指出的,在記事本++ 6.0及更高版本,可以使用「替換」功能刪除所有以「;」開頭的行要麼 」#」。

Tao提供了一個作爲起點的正則表達式,但它沒有考慮到在「;」之前可能存在的空白空間。或給定行上的「#」字符。例如,以「;」開頭的行或「#」但是「選項卡」在使用Tao的正則表達式^(#|;).*\r\n時不會被刪除。

Tao的正則表達式並沒有解釋BoltClock的答案中提到的警告:無論是:系統中換行符的差異。

一個改進是使用^(\s)*(#|;).*(\r\n|\r|\n)?,它佔據了前導空格和換行符的差異。另外,尾部?處理文件的最後一行以#;開頭的情況,但不以換行符結束。

爲了好奇,可以辨別在給定文檔中使用哪種類型的換行符(並且可以使用多種類型):查看 - >顯示符號 - >顯示換行符。

+0

您建議的正則表達式似乎無法定位文檔的最後一行(如果它是相關行)。 – maja

+1

很好,@maja!嘗試追加'?'到最後,就像這樣:'^(\ s)*(#|;)。*(\ r \ n | \ r | \ n)?'。我會相應地更新原始答案。謝謝! –

-1

在Notepad ++中,可以使用查找對話框中的標記選項卡爲與查詢匹配的所有行添加書籤,這些行可以是正則表達式或正常(通配符)。

然後使用搜索>書籤>刪除書籤行。

+0

** stema **已經寫出了相同的答案,但您的回答信息要少得多。雖然對舊問題添加新答案可能很好,但只有提供新信息時纔有用。只重複其他答案的答案沒有價值,它們只是混亂。 – AdrianHHH

相關問題