我正在尝试匹配路径中的文件名。例如:
/path/test/index.html
我想匹配index.html
但是我也可以有一个没有/
的路径,所以路径可能是
index.html
并希望匹配index.html
我有以下内容与第一种情况相匹配,可以通过群组获取它。
.*/([^/]+)
但是,如果路径中唯一的东西是文件名,我怎么能匹配文件名呢?
答案 0 :(得分:3)
[^/]+$
之外,可能不需要任何其他内容
匹配整行,您的引擎匹配器需要它。
答案 1 :(得分: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(接受的答案)仅匹配路径末尾的路径中的任何字符串。它与没有路径的文件名不匹配。 AA可能会为OP做得很好。能够匹配字符串中的任何文件名对我很有帮助。
总有边缘情况,例如在我的情况下,我仍在使用此正则表达式匹配版本号。我为我的案子做了一些工作但是我太具体了。
答案 2 :(得分:0)
将.*/
变为可选组:
(?:.*/)?([^/]+)