java - 从 url 中提取特定字段

标签 java regex

我想从 facebook 页面的 url 中提取特定字段。我无法提取,因为链接格式不是静态的。例如:如果我将以下示例作为输入,它应该按照我们的期望给出 o/p

1) https://www.facebook.com/pages/Ice-cream/109301862430120?rf=102173023157556

o/p -109301862430120

这种类型的链接怎么样

谁能帮帮我

最佳答案

简而言之,您想在最后一个 / 之后和(如果有的话)在 ? 标记之前获取名称。

您可以使用 URIFile 类来实现,例如

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/

相关文章:

JavaScript:如何从字符串中删除任何包含(或直接位于其前面)大写字母、数字或逗号的单词?

c - 使用正则表达式解析 URL 参数

regex - Hive:使用正则表达式拆分字符串

java - 将 int 分配给对象时,Java 会自动装箱吗?

java - 迷失与弦

Java 正则表达式匹配除单个表达式之外的任何内容

javascript - 使用正则表达式过滤对象数组

java - Java 客户端<-->服务器套接字的问题

Java 8 JSTL 和 saxParseException

javascript - 从 Text Js 中搜索特定单词,包括特殊字符