正则表达式 - 用文件名替换文件夹详细信息

时间:2015-11-05 17:02:11

标签: regex

Regex全新,所以我希望我能在这里找到答案。

我正在使用Notepad ++,我从文本文档中的文件夹中获得了大量文件详细信息,如下所示:

01/01/2015  08:00      1,000,000  filename.exe
01/02/2015  08:30      1,450,000  aDifferentFilename.exe

我想做一个查找和替换,以便整个事情被替换为:

filename.exe
aDifferentFilename.exe

我可以手动删除它们,但是有超过一千行!

我已经使用^(.*)%逐个查找这些行,但是我会在替换字段中添加什么来保留文件名,即filename.exe

任何帮助/解释都会很棒!

2 个答案:

答案 0 :(得分:1)

在Notepad ++的查找对话框中,单击"替换"的选项卡。 (可能很明显,但要完整)。确保单选按钮为"正则表达式"检查(再次,可能是显而易见的)。在"找到什么:"文本框输入:

^([^ ]+[ ]+){3}(.*)$

如果文件中的模式始终是四个用空格分隔的信息总字段(包括文件名)。说明:找到三个包含一个或多个非空格的组,后跟一个或多个空格,后跟行上的其他所有空格。 "线路上的其他所有内容"被分配给组2(它被括在表达式的第二组括号中)。我们将使用以下事实来指定"替换为:"串。这对于使搜索位置超过我们想要保留的文本是必要的,否则在替换之后它将与表达式匹配,并且本身将被替换。

输入:

^(.{34})(.*)$

如果文件中的一致模式是文件名始终在第35列开始(两种模式都可以成立,在这种情况下你可以使用)。说明:这将在每行的开头找到前34个字符,后跟行上的其他所有字符。请参阅上面的解释,为什么我们要在线上找到其他所有内容。"请注意,没有必要对"。{34}"进行分组。在括号中,我只是这样做,以便在两个例子中"替换为:"文本将是第2组。

在"替换为:"文本框输入\ 2

说明:这告诉Notepad ++替换我们匹配的匹配的组2子集,换句话说,&#34;行上的所有其他内容&#34;,在这种情况下是文件名。< / p>

点击&#34;替换&#34;

另一个选项:如果要保留的文本始终在第35列开始(如上面的方法所需),您可以通过按住ctrl + alt + shift然后向左选择要删除的文本列用鼠标单击并拖动。选择文本后,点击删除

答案 1 :(得分:0)

您可以尝试在3组空格上进行匹配,或者假设逗号始终是固定的。这里有一些快速而又脏的东西,它以贪婪的方式与逗号匹配,之后是5个字符。

^(.*,.....)