2016-02-19 146 views
0

我有以下一系列字符串。我只需要匹配到每個文件中的某個點,並在文件擴展名後面留下數字。匹配到正則表達式中的另一個表達式

folder/file.ext 
folder/folder/file.ext 
file.ext 
file.file.ext 
folder/file.ext/320 
folder/folder/file.ext/320 
file.ext/320 
file.file.ext/320 
folder/file.ext/320/240 
folder/folder/file.ext/320/240 
file.ext/320/240 
file.file.ext/320/240 

換句話說,我想變換到上述:

folder/file.ext 
folder/folder/file.ext 
file.ext 
file.file.ext 
folder/file.ext 
folder/folder/file.ext 
file.ext 
file.file.ext 
folder/file.ext 
folder/folder/file.ext 
file.ext 
file.file.ext 

我用下面的表達式的文件夾(或多個),文件和擴展名匹配:

[a-zA-Z0-9_/.-]+ 

但它意外地匹配文件名後可以加上的/000/000/000

這種表達越來越近,但省去了.ext

(.+?)(\.[^.]*$|$) 

我怎麼寫,所選擇的文件夾,文件和擴展名的表達,但延長後留下了什麼?

+1

這對你是否正確:'^(。+ \。[^ /] +)' – Toto

+0

@Toto這絕對完美,如果你做出答案我會接受它。 – Forest

回答

1

我簡單地做:

^(.+\.[^/]+) 

這將匹配路徑+文件名+擴展名,並讓他們在組1

它只能如果在延長後的路徑沒有點。