2016-02-19 108 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

它只能如果在延长后的路径没有点。