2016-11-30 68 views
1

我可以发誓我已经做过这个,但是......不行。文件名捕获表格路径

我想从下面的示例数据的每一行复制文件名称到行的开头。但是,当我将parathensis添加到表达式以捕获文件名时,它将被删除。我尝试了几个变化。

的Regex Expresion

[^\\/:*?<>]+$ 

表达成功捕获在每一行上的文件名。

样本数据

c:\Dir1\dir2\Samplefile.txt 
c:\Dir1\dir2\dir3\Sample file.txt 
c:\Dir1\dir2\Samplefile 
c:\Dir1\dir2\dir3\Sample file 
c:\Dir1\wp_movfiles_20160911024934.ini 
c:\Dir1\\dir2\wp_movfiles_20160911055222.ini 

欲望导致

Samplefile.txt c:\Dir1\dir2\Samplefile.txt 
Sample file.txt c:\Dir1\dir2\dir3\Sample file.txt 
Samplefile  c:\Dir1\dir2\Samplefile 
Sample file  c:\Dir1\dir2\dir3\Sample file 
wp_movfiles_20160911024934.ini  c:\Dir1\wp_movfiles_20160911024934.ini 
wp_movfiles_20160911055222.ini  c:\Dir1\\dir2\wp_movfiles_20160911055222.ini 

任何assitance大大appricated。谢谢。

+0

我不明白这个问题。使用正则表达式正确捕获所有文件名https://www.regex101.com/r/gymK9t/1 – Aleksandar

+0

正确 - 问题在于捕获文件名和完整的行与parathensis。所以他们可以被引用\ 1和\ 2 – user68650

回答

4

我想你可以使用这个表达式脱身:

.*\\(.*)$ 

这将贪婪地占用文件路径一切由左到右,直到打到最后的反斜杠。然后它将停止,并捕获最后一个反斜杠后的所有内容,这应该是文件名。

演示在这里:

Regex101

+0

你是100%正确的! - 不知道为什么我这么复杂!添加第二个分组可以有两个字段 - (。* \\(。*))$谢谢! – user68650