有了这个文字:
http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg
这样的其他文本,其中最后1
可以是任何其他数字,最后44
也可以是任何其他数字,我需要一个匹配/1t44.jpg
的正则表达式。到目前为止我尝试过的所有内容(/.+?\.([^\.]+)$
)都匹配第一个斜杠(//img.oo.com.au/prod/CRWWBGFWG/1t44.jpg
)。
我正在使用javascript,因此RegexPal上的任何工作都应该这样做。
提前致谢。
答案 0 :(得分:46)
这是一个简单的正则表达式,它将匹配最后/
之后的所有内容:
/[^/]*$
答案 1 :(得分:28)
如果要将文件名与特定文件扩展名匹配,可以使用以下内容:
/\/\dt\d\d\.jpg$/
匹配:
a slash
followed by a digit
followed by the letter 't'
followed by two digits
followed by '.jpg' at the end of the string
或者,如果你真的只想要文件名(无论是在带有任何文件扩展名的最后一个斜杠之后),那么你可以使用它:
/\/[^\/]+$/
匹配:
a slash
followed by one or more non-slash characters
at the end of the string
在http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg
的示例字符串中,这两个字符串都匹配/1t44.jpg
。第一个显然更具限制性,因为它需要特定的文件名格式。第二个匹配任何文件名。
其他选择。在node.js开发中,您可以使用path
module并使用path.parse()
来打破其所有各种组件的路径。
并且,为浏览器编写了各种库,这些库也将分解其组件的路径。
答案 2 :(得分:9)
正如Johnsyweb所说,这里并不需要定期快递。 AFAIK执行此操作的最快方法是使用lastIndexOf
和substr
。
str.substr(str.lastIndexOf('/'));
答案 3 :(得分:3)
当然,您不必使用正则表达式to split
a string和pop
the last part:
var str="http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";
var parts = str.split("/");
document.write(parts.pop() + "<br />");
答案 4 :(得分:0)
这是针对linux机器上的java。它抓取文件路径的最后一部分,以便它可用于进行文件锁定。
// String to be scanned to find the pattern.
String pattern = ".*?([^/.]+)*$";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher match = r.matcher("/usr/local/java/bin/keystore");
/**
* Now you have two matches
* #0 /usr/local/java/bin/keystore
* #1 keystore
*/
String fileLock = "";
if (match.find()) {
fileLock = match.group(1) + ".lock";
}
我知道,与原来的问题有点不同。但我希望这能帮助那些遇到同样问题的人。
分享并享受。
答案 5 :(得分:0)
根据Scott的回答,试试这个:(JavaScript)
var url = "http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";
var path = url.replace(/(.*)([\\\/][^\\\/]*$)/, "$1" );
var lastElement = url.replace(/(.*)([\\\/][^\\\/]*$)/, "$2" );
这也可以匹配Windows / Nix文件路径,以提取文件名或文件路径:
c:\Program Files\test.js => c:\Program Files
c:\Program Files\test.js => \test.js