首先,如果您的 URL 都有“/”字符和文件类型扩展名,那么您可能不需要正则表达式。
例如:
String url = "http://mysite.es/img/p/3/6/2/5/6/36256.jpg";
String toReplace = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("."));
System.out.println(toReplace);
String replacedURL = url.replace(toReplace, "foo");
System.out.println(replacedURL);
编辑
// solution with regex
Pattern fileName = Pattern.compile(".+(?<!/)/(?!/)(.+?)\\..+?");
Matcher matcher = fileName.matcher(url);
if (matcher.find()) {
System.out.println(matcher.group(1));
String replacedURLWithRegex = url.replace(matcher.group(1), "blah");
System.out.println(replacedURLWithRegex);
}
输出:
36256
http://mysite.es/img/p/3/6/2/5/6/foo.jpg
编辑输出:
36256
http://mysite.es/img/p/3/6/2/5/6/blah.jpg
关于你的正则表达式有什么问题,“[\.jpg]”将尝试匹配方括号定义的类中的任何字符,即“。” 或“j”或“p”或“g”,而不是序列中的“.jpg”。对于顺序匹配,您不使用方括号(尽管您可以使用圆括号对顺序匹配进行分组)。