匹配最后一个字后/

时间:2010-02-16 12:52:36

标签: regex

所以,我有一些实习网址:例如“/img/pic/Image1.jpg”或“/pic/Image1.jpg”或只是“Image1.jpg”,我需要匹配这个“Image1” .jpg“换句话说,我想在/之后匹配最后一个字符序列,或者如果没有/只是字符序列。提前谢谢!

8 个答案:

答案 0 :(得分:12)

如果没有/ s,

.*/(.*)将无效。

([^/]*)$应该有效,无论是否存在。

答案 1 :(得分:11)

实际上你不需要regexp。

s="this/is/a/test"
s.substr(s.lastIndexOf("/")+1)
=> test

它也适用于没有任何/的字符串,因为lastIndexOf返回-1。

s="hest"
s.substr(s.lastIndexOf("/")+1)
=> hest

答案 2 :(得分:3)

.*/([^/]*)

捕获组匹配/.

之后的最后一个序列

答案 3 :(得分:2)

以下表达式可以解决这个问题:

/([\w\d._-]*)$

甚至更容易(但我认为这也在我之前发布)

([^/]+)$

答案 4 :(得分:2)

我测试过的一个简单的正则表达式:

\w+(.)\w+$

这是一个很好的网站,你可以测试它:http://rubular.com/

答案 5 :(得分:1)

在Ruby中你会写

([^\/]*)$

Ruby中的Regexp非常普遍,你可以在这里测试它们:http://rubular.com/ 顺便说一下:也许有其他解决方案不涉及正则表达式? E.g File.basenam(path)(Ruby再次)

编辑: profjim 之前已发布。

答案 6 :(得分:1)

我注意到你在评论中说你正在使用javascript。你实际上并不需要一个正则表达式,我总是认为有一个替代使用正则表达式很好。

var str = "/pic/Image1.jpg";
str.split("/").pop();

// example: 
alert("/pic/Image1.jpg".split("/").pop());     // alerts "Image1.jpg"
alert("Image2.jpg".split("/").pop());          // alerts "Image2.jpg"

答案 7 :(得分:0)

类似。* /(。*)$(详情取决于我们是在谈论Perl,还是其他一些正则表达方言)

首先。*匹配所有内容(包括斜杠)。然后有一个斜杠,然后是。*匹配从斜杠到结尾的所有东西(即$)。

*从左到右贪婪地操作,这意味着当你有多个斜杠时,第一个。*将匹配除最后一个之外的所有斜杠。