Java从url字符串中提取子字符串

我想从一个url字符串中提取子字符串。 这是网址:

  https://test.tech.com/public/pi?id=635106391297495358_0_280740c3f281419b954b309b45a41d77-M_M_0_56b6f628b90b4146abbdba1de9095657

我想从id =开始提取

  635106391297495358_0_280740c3f281419b954b309b45a41d77

直到破折号( - ),然后提取剩余的子字符串

  M_M_0_56b6f628b90b4146abbdba1de9095657

请注意,确切的域名不是上面的那个,这只是一个例子。

有任何想法吗? 我很乐意感谢你的帮助。 谢谢。

更新:

这是我迄今为止所做的:

  final URI uri = URI.create(result.getContents());
                    final String path = uri.getPath();
                    path.substring(path.lastIndexOf('-') + 1);
                    Log.e("EXTRACTED", "" + path);

但它只是公开/ pi。


首先, uri.getPath()返回路径组件,但是你要找的是在?之后,所以你可能想要尝试的是uri.getQuery()

至于匹配:

Pattern p = Pattern.compile("id=(.+?)-");
Matcher m = p.matcher(uri.getQuery());
if (m.find()) {
    System.out.println(m.group(1));
}

没有测试,但我认为它应该工作。 (.+?)是一个捕获组,它试图匹配id=-之间的字符。


一个主要问题是:

 path.substring(path.lastIndexOf('-') + 1);

将不会修改可变路径。 原因是String是不可变的,任何对它们的改变都会在内部创建一个新的字符串。 如果你想获得新的子字符串引用,那么你需要将它分配回path

 path = path.substring(path.lastIndexOf('-') + 1);

现在你可以尝试更多的子串选项


final URI uri = URI.create("https://test.tech.com/public/pi?id=635106391297495358_0_280740c3f281419b954b309b45a41d77-M_M_0_56b6f628b90b4146abbdba1de9095657");
    String queryString = uri.getQuery(); 
    String subString =  queryString.substring(queryString.lastIndexOf('-') + 1);
    System.out.println("EXTRACTED " + subString);

生产:

提取M_M_0_56b6f628b90b4146abbdba1de9095657

链接地址: http://www.djcxy.com/p/87017.html

上一篇: Java extract substring from url string

下一篇: Perl regex to extract groups of digits from string of dot