正则表达式获取文件名的一部分后没有文件扩展名的最后一个点

时间:2013-08-26 05:58:06

标签: regex

我有一堆文件,一些例子如下:

/foo1/foo2/bar1.bar2.bar3.answer.jar

/foo1/bar1.bar2.answer.jar

/foo1/foo2/answer.jar

对于以上所有我想要一个匹配'回答'的正则表达式。换句话说,我希望获得文件的别名,该文件是最后一个点之后文件名的一部分(如果没有点,则是文件名本身),文件扩展名(.jar可以保证在这里剥离更容易。

我知道我可以用一个更简单的正则表达式来实现这一点,用点分割值然后得到倒数第二个,但在这种情况下我正在构建一个后端的东西,理想情况下需要一个正则表达式在给定文件类型的配置定义中定义,并吐出别名,这可能与其他文件类型不同。

是的,我过度工程了。 :)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:(假设答案部分不包含./

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

第一个捕获组是您想要的部分。

答案 1 :(得分:1)

以下正则表达式适合您:

[^/.]+(?=\.jar$)

如果使用Javascript或类似的风格/是正则表达式分隔符,那么你需要像这样转义/

[^\/.]+(?=\.jar$)