我想从 facebook 页面的 url 中提取特定字段。我无法提取,因为链接格式不是静态的。例如:如果我将以下示例作为输入,它应该按照我们的期望给出 o/p
1) https://www.facebook.com/pages/Ice-cream/109301862430120?rf=102173023157556
o/p -109301862430120
这种类型的链接怎么样
谁能帮帮我
最佳答案
简而言之,您想在最后一个 /
之后和(如果有的话)在 ?
标记之前获取名称。
您可以使用 URI
和 File
类来实现,例如
String data = "https://www.facebook.com/pages/Anti-Christian-sentiment/149675731889496?ref=br_tf";
System.out.println(new File(new URI(data).getRawPath()).getName());
输出:149675731889496
如果你需要使用正则表达式那么你可以使用
([^/?]+)(\\?|$)
然后只阅读第 1 组的内容(第一对括号中的内容)。
如果您不想使用组,并使正则表达式只匹配数字部分(不包括匹配中的 ?
),那么您可以使用 look-ahead (? =...)
。您必须使用的正则表达式看起来像
[^/?]+(?=\\?|$)
代码示例:
String data = "https://www.facebook.com/pages/Anti-Christian-sentiment/149675731889496?ref=br_tf";
Pattern p = Pattern.compile("([^/?]+)(\\?|$)");
Matcher m = p.matcher(data);
if (m.find()){
System.out.println(m.group(1));
}
输出:
149675731889496
关于java - 从 url 中提取特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22266750/