正则表达式匹配路径中的文件名

时间:2015-08-27 21:24:02

标签: regex

我正在尝试匹配路径中的文件名。例如:

/path/test/index.html

我想匹配index.html 但是我也可以有一个没有/的路径,所以路径可能是

index.html

并希望匹配index.html

我有以下内容与第一种情况相匹配,可以通过群组获取它。

.*/([^/]+)

但是,如果路径中唯一的东西是文件名,我怎么能匹配文件名呢?

3 个答案:

答案 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)

.*/变为可选组:

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