删除所有与Notepad ++中的正则表达式不匹配的行

时间:2010-06-22 10:17:41

标签: regex notepad++

我有一系列特定格式的文件。我已粘贴了一个示例here

----------------------------------------------
Attempting to factor n = 160000000000110400000000018963... Found a factor: 400000000000129
Time (s): 18.9561
----------------------------------------------
Attempting to factor n = 164025000000137700000000028819... Found a factor: 405000000000179
Time (s): 22.3426
----------------------------------------------
Attempting to factor n = 168100000000155800000000036051... Found a factor: 410000000000197
Time (s): 101.183

我想要一个可以用来捕捉时间的正则表达式,例如对于格式为“Time(s):X.Y”的所有行,我想将X.Y保持在一条单独的行上,然后扔掉所有的东西。

我有以下表达式:Time(s):\ s +(\ d +。\ d +),它们捕获这些。这捕获了我需要的行,但Notepad ++似乎只具有替换某些东西的功能,而不是保存匹配的内容。所以我可以删除所有这些行,这几乎与我想要的相反。

任何帮助?

5 个答案:

答案 0 :(得分:3)

我不知道Noteplad ++,但很可能你可以在替换字段中使用捕获组的结果。试试

\1

$1

1 =第一个捕获组。所以你基本上用你的情况下的\ 2替换整行。

答案 1 :(得分:1)

在命令行中使用它:

for /f "usebackq tokens=3" %a in (`findstr /b "Time" 1.txt`) do @echo %a

答案 2 :(得分:0)

使用以下表达式匹配整行:

.*\(s\)\:\s+(\d+.\d+)

现在您可以用

替换它
\1

,它为您提供与时间

匹配的匹配组号1(上述表达式中唯一的组)

答案 3 :(得分:0)

按照后续步骤(Notepad ++ 6.2.3):

  1. 清理并标记

    ^(Time \(s\):)+ ([.\r]*)替换为:#\2

  2. 删除未标记的行

    ^[^#]+[.\n]*替换为:(empty)

  3. 删除标记

    ^#(.*)替换为:\1

答案 4 :(得分:0)

调整正则表达式,使其与“时间”行匹配,并捕获整个行内的时间或匹配整行。然后用捕获的文本替换,对于忽略的行,该文本将为空白。

Find what:     (Time \D+(\d+.\d+)|.*)
Replace with:  \2

这将为您留下一系列捕获时间和空白行,可以使用TextFX的删除空白行或“\ r \ n \ r \ n”上的扩展替换删除。