2016-11-28 110 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'。 –