我想匹配路徑中的文件名。例如:正則表達式路徑匹配文件名
/path/test/index.html
我會想匹配index.html
不過,我也可以有不/
一個路徑,以便該路徑可能是
index.html
,並會想匹配index.html
我有以下匹配的第一個案件,並可以抓住它與一個組。
.*/([^/]+)
但是,如果路徑中唯一的東西是文件名,我該如何匹配文件名?
我想匹配路徑中的文件名。例如:正則表達式路徑匹配文件名
/path/test/index.html
我會想匹配index.html
不過,我也可以有不/
一個路徑,以便該路徑可能是
index.html
,並會想匹配index.html
我有以下匹配的第一個案件,並可以抓住它與一個組。
.*/([^/]+)
但是,如果路徑中唯一的東西是文件名,我該如何匹配文件名?
有可能是沒有必要,除非你想
匹配整條生產線和發動機的匹配要求它有什麼,但[^/]+$
。
充分利用.*/
爲可選組:
(?:.*/)?([^/]+)
通常有不止一種方法來做正則表達式,而且經常有邊緣情況導致複雜的簡單任務。
如果你想在一個字符串匹配任何/所有的有效文件名,那麼也許:
[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做好準備。對我來說能夠匹配任何字符串中的文件名是有幫助的。
總是存在邊緣情況,例如在我的情況下,我仍然使用此正則表達式匹配版本號。我有一個解決我的情況的工作,但我越來越具體。
你在用什麼語言?這可能不是一個正則表達式的工作。 –
@AndyLester Java – kittels