所以,我有一些实习网址:例如“/img/pic/Image1.jpg”或“/pic/Image1.jpg”或只是“Image1.jpg”,我需要匹配这个“Image1” .jpg“换句话说,我想在/之后匹配最后一个字符序列,或者如果没有/只是字符序列。提前谢谢!
答案 0 :(得分:12)
.*/(.*)
将无效。
([^/]*)$
应该有效,无论是否存在。
答案 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)
答案 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,还是其他一些正则表达方言)
首先。*匹配所有内容(包括斜杠)。然后有一个斜杠,然后是。*匹配从斜杠到结尾的所有东西(即$)。
*从左到右贪婪地操作,这意味着当你有多个斜杠时,第一个。*将匹配除最后一个之外的所有斜杠。