Java 如何提取字符的第二次出现?
如何从中提取“1358751074-6824”Java 如何提取字符的第二次出现?,java,regex,substring,Java,Regex,Substring,如何从中提取“1358751074-6824” http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg http://api.discogs.com/images/R-1169056-13587510746824.jpeg 它还需要从中提取“13587510746824” http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg http://api.disco
http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg
http://api.discogs.com/images/R-1169056-13587510746824.jpeg
它还需要从中提取“13587510746824”
http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg
http://api.discogs.com/images/R-1169056-13587510746824.jpeg
所以我想我可以通过从“最后一个路径组件的第二个-到最后一个点”的子串来实现,但是如何计算第二个-根据允许的字符串变化,可以执行以下操作:
String extract = s.replaceAll(".*?-.*?-([\\d-]+).*", "$1");
跳过第一个连字符之前的所有内容*?-
跳过所有内容直到第二个连字符*?-
是您要保留的部分:数字和连字符([\\d-]+)
跳过字符串的其余部分*
int pos = str.indexOf('-', str.indexOf('-')+1);
您可以尝试以下方法:
// Your original String
String str = "http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg";
// identify the one-before-last-dash
int i=str.lastIndexOf("-", str.lastIndexOf("-")-1);
// Extract the value you want
String newStr = str.substring(i+1, str.lastIndexOf("."));
// Return numeric value only
String strNums = newStr.replaceAll("[^?0-9]+", "");
谢谢,这是最简单的方法。谢谢你的回答,这次我选择了nonregexp选项,因为它更容易理解