首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用正则表达式从URL中获取第二个元素

如何使用正则表达式从URL中获取第二个元素
EN

Stack Overflow用户
提问于 2015-12-24 15:16:42
回答 2查看 65关注 0票数 2

我有一个从URL中获取最后一个元素的解决方案:

代码语言:javascript
运行
复制
public static String getLastBitFromUrl(final String url){
    // return url.replaceFirst("[^?]*/(.*?)(?:\\?.*)","$1);" <-- incorrect
    return url.replaceFirst(".*/([^/?]+).*", "$1");
}

www.foo.com/id会给我id,但是如果我想要www.foo.com/id1/id2id1怎么办?

我必须对正则表达式做哪些更改?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-24 15:23:02

这个解决方案是没有准则的。试试这个:

“`String url = "www.foo.com/id1/id2";

字符串idArray = url.split("/");

字符串id1 =idArray1 1;`

这将使用给定的参数(即"/“)拆分字符串。所以idArray1会给你第一个id。

票数 1
EN

Stack Overflow用户

发布于 2015-12-24 22:20:16

如果需要基于正则表达式的解决方案,则更正后的解决方案将是:

代码语言:javascript
运行
复制
public static String getLastBitFromUrl(final String url){
    return url.replaceFirst("[^/]*/([^/?]+).*", "$1");
}

//...
System.out.println(getLastBitFromUrl("www.foo.com/id"));      // => id
System.out.println(getLastBitFromUrl("www.foo.com/id1/id2")); // => id1

请参阅演示

要点是.*首先匹配整个字符串,然后回溯检查/。所以,您与最后一个/匹配。要获得第一个/,您不需要使用replaceFirst方法,您可以使用replaceAll,但是对于带有*量词的[^/]*否定字符类,它的意思是匹配除/ 0次或更多次以外的所有字符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34454771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档