2013-10-21 63 views
2

我有文件名像 C:\ fakepath \ CI_Logo.jpg。 我需要一個正則表達式來獲取CI_Logo.jpg。與\\[^\\]+$試過,但沒有鍛鍊..正則表達式 - 獲取文件名後''

下面是我的javascript代碼

var regex="\\[^\\]+$"; 
var fileGet=$('input.clsFile').val(); 
var fileName=fileGet.match(regex); 
alert(fileName); 
+1

什麼語言是您使用?你的正則表達式似乎很好。你怎麼使用它?你可以簡單地使用'[^ ​​\\] + $'。 –

+0

@RohitJain也許他不想在他的結果中使用反斜槓?這應該工作'[^ \\] + $'... – HamZa

+3

要求「正則表達式」是沒有意義的。有BRE和ERE以及PRE等,全部由不同的工具使用。不要求提供「正則表達式」,而是要求使用任何工具的解決方案。 RE甚至可能根本就不適合,也許字符串或字符搜索和替換更有意義。 –

回答

1

最低限度的做法:demo

([\w\d_\.]+\.[\w\d]+)[^\\] 
+0

這也匹配'C:\ fakepath \ CI_Logo.jpg \ something'中的CI_Logo.jpg',它實際上應該匹配'something'。請記住,文件夾也可能包含點,並且文件名不一定包含擴展名! – gehho

1

使用此

String oldFileName = "slashed file name"; 
String[] fileNameWithPath = oldFileName.split("\\\\"); 
int pathLength = fileNameWithPath.length; 
oldFileName = fileNameWithPath[pathLength-1]; 
在java中

, 我想,您可以修改此爲任何其他LANGS。

編輯: 確保拆分與「\\\\」 - 四斜線

+0

來寫他們的路徑名是的,分離應該是這個問題的最佳解決方案......但是這個代碼可以改進。既然我們知道文件名總是在數組的最後一個位置,我們只需要啓動它:) – Alexandre

+0

是的,這可以優化,但在這裏提供詳細的答案。 – Akshay

+1

或者,在.NET中:'Path.GetFilename(...)' – gehho