2016-11-28 127 views
0

我有一些舊的存儲庫補丁/差異文件,我想使用正則表達式來刪除所有內容,但添加的行。多行匹配

鑑於在差異中所添加的行從未開始用'+',我試圖用的‘替換’與‘正則表達式’和對話‘匹配換行符。’選擇:

在 「查找內容」:(\+|.*?\n\+)([^+].*?)(\n|$)
「替換」:+\2\n

我相信this is correct,但在記事本+ +它只會匹配2 nd連線以'+'開頭。因此,例如記事本++的更換這樣的:

  float minBlur; 
     float maxBlur; 
-  double minSpeed; 
-  double maxSpeed; 
+  float minSpeed; 
+  float maxSpeed; 
+  float medianSpeed; 

是這樣的:

+  float maxSpeed; 
+  float medianSpeed; 

但我相信它應該是這樣的:

+  float minSpeed; 
+  float maxSpeed; 
+  float medianSpeed; 

誰能告訴我是什麼問題這裏?或者,如果可能有解決方法?

+0

我剛纔想在覈電站,並在一開始有3條線與'+'。所以,你試圖刪除不是以'+開頭的行嗎?嘗試用'^(?!\ +)。* \ R *'替換空字符串(但用*'.'匹配換行符*選項禁用) –

+0

@WiktorStribiżew您有什麼版本?我在2016年9月21日的版本中運行。 –

+0

我有NPP v.7.2.1,2016年11月20日。我相信你的正則表達式實際上並不正確,如果你需要做我認爲你想做的事(參見我上面的評論)。 –

回答

1

在我看來,你需要刪除任何不以加號開頭的行。

您可以採用如下方案應在近期NPP版本一致地工作:

搜索^(?!\+).*\R*
更換<empty>

詳細

  • ^ - st行
  • (?!\+)的藝術 - 必須有沒有+在該行開始
  • .* - 比換行字符(如.匹配換行符選項應該被禁用)以外的任何字符0+
  • \R* - 0+換行符。

見截圖:

enter image description here

+0

不幸的是,這也會提取文件中以「+++」開頭的文件名行。我會看看是否可以擴展您的正則表達式來解決問題,但這絕對是解決此問題的更好方法。 –

+0

'^(\ + \ + | [^ +])。* \ R *'就像魅力一樣。謝謝我不知道'\ R'。 –