我有一系列特定格式的文件。我已粘贴了一个示例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 ++似乎只具有替换某些东西的功能,而不是保存匹配的内容。所以我可以删除所有这些行,这几乎与我想要的相反。
任何帮助?
答案 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):
清理并标记
将^(Time \(s\):)+ ([.\r]*)
替换为:#\2
删除未标记的行
将^[^#]+[.\n]*
替换为:(empty)
删除标记 p>
将^#(.*)
替换为:\1
答案 4 :(得分:0)
调整正则表达式,使其与“时间”行匹配,并捕获整个行内的时间或匹配整行。然后用捕获的文本替换,对于忽略的行,该文本将为空白。
Find what: (Time \D+(\d+.\d+)|.*)
Replace with: \2
这将为您留下一系列捕获时间和空白行,可以使用TextFX的删除空白行或“\ r \ n \ r \ n”上的扩展替换删除。