2016-11-30 81 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