2015-08-27 72 views
2

我想匹配路徑中的文件名。例如:正則表達式路徑匹配文件名

/path/test/index.html 

我會想匹配index.html 不過,我也可以有不/一個路徑,以便該路徑可能是

index.html 

,並會想匹配index.html

我有以下匹配的第一個案件,並可以抓住它與一個組。

.*/([^/]+) 

但是,如果路徑中唯一的東西是文件名,我該如何匹配文件名?

+0

你在用什麼語言?這可能不是一個正則表達式的工作。 –

+0

@AndyLester Java – kittels

回答

2

有可能是沒有必要,除非你想
匹配整條生產線和發動機的匹配要求它有什麼,但[^/]+$

0

充分利用.*/爲可選組:

(?:.*/)?([^/]+) 
1

通常有不止一種方法來做正則表達式,而且經常有邊緣情況導致複雜的簡單任務。

如果你想在一個字符串匹配任何/所有的有效文件名,那麼也許:

[A-Za-z0-9_-]+\.?[A-Za-z0-9]* 

或(因爲你可以有一個名爲ConfigurationFile.txt.bac例如文件)...

[A-Za-z0-9_-\.]+\.?[A-Za-z0-9]* 

但是,這是不是你想要的,因爲每一個目錄名是一個有效的文件名...所以... 這將匹配一個擴展唯一有效的文件名。

[A-Za-z0-9_-]+\.[A-Za-z0-9]+ 

[A-Za-z0-9_-\.]+\.[A-Za-z0-9]+ 

顯然有很多選擇。 AA(接受的答案)只匹配路徑末尾的路徑中的任何字符串。它不匹配沒有路徑的文件名。機管局可能會爲OP做好準備。對我來說能夠匹配任何字符串中的文件名是有幫助的。

總是存在邊緣情況,例如在我的情況下,我仍然使用此正則表達式匹配版本號。我有一個解決我的情況的工作,但我越來越具體。