多线匹配

时间:2016-11-28 15:00:03

标签: regex svn replace notepad++

我有一些旧的存储库补丁/差异文件,我想使用正则表达式删除除添加的行之外的所有内容。

鉴于diff 中添加的行永远'+'开头,我尝试使用' s"替换"对话框"正则表达式"和"。匹配换行符"选择并:

"找到": (\+|.*?\n\+)([^+].*?)(\n|$)
"替换为": +\2\n

我相信this is correct,但在Notepad ++中它只会匹配以'+'开头的行中的2 nd 行。所以例如Notepad ++替代了这个:

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

看起来像这样:

+        float   maxSpeed;
+        float   medianSpeed;

但我相信它应该是这样的:

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

谁能告诉我这里的问题是什么?或者,如果可能有解决方法?

1 个答案:

答案 0 :(得分:1)

在我看来,您需要删除任何不以加号开头的行。

您可以使用以下解决方案,该解决方案应该在最近的NPP版本中保持一致:

搜索^(?!\+).*\R*
替换<empty>

<强>详情:

  • ^ - 开始行
  • (?!\+) - 第一行
  • 处必须没有+
  • .* - 除了换行符之外的任何0 +字符(因为 .匹配换行符选项应该禁用)
  • \R* - 0+换行符序列。

见截图:

enter image description here