java 正则 url_java – 从url中提取字符串的正则表达式

该博客介绍了如何利用正则表达式从URL中有效地提取(accounts/)后面的部分,即账号ID。示例代码展示了一个静态方法,通过编译一次性正则模式来提高效率,并在多个URL实例中重用。方法包括优化的while循环替换为if或条件运算符,以简化代码并避免不必要的遍历。博客还提供了代码示例和测试用例,显示了正确提取账号ID的结果。
摘要由CSDN通过智能技术生成

> [accounts]不会尝试查找帐号字,但是一个字符是a,c(字符的重复不会改变任何东西),o,u,n,t或s,因为[…]是

character class所以摆脱那些[和]并用/替换它们,因为你很可能不想接受像/ specialaccounts /但只有/ accounts /这样的情况.

>看起来您只想在/ accounts /之后找到下一个非/部分.在这种情况下,你可以使用/ accounts /([^ /])

>如果您确定URL中只有一个/ accounts / section,您可以(并且对于更易读的代码)将您的while更改为if或甚至是条件运算符.此外,不需要包含(“/ accounts /”),因为它只是在整个字符串上添加了额外的遍历,这可以在find()中完成.

>看起来您的方法不是使用您的类(任何字段)保存的任何数据,因此它可能是静态的.

演示:

//we should resuse once compiled regex, there is no point in compiling it many times

private static Pattern pattern = Pattern.compile("/accounts/([^/]+)");

public static String extractAccountIdFromURL(String url) {

Matcher matcher = pattern.matcher(url);

return matcher.find() ? matcher.group(1) : null;

}

public static void main(java.lang.String[] args) throws Exception {

String examples =

"http://localhost:8024/accounts/u8m21ercgelj/\r\n" +

"http://localhost:8024/accounts/u8m21ercgelj\r\n" +

"http://localhost:8024/accounts/u8m21ercgelj/users?";

for (String url : examples.split("\\R")){// split on line separator like `\r\n`

System.out.println(extractAccountIdFromURL(url));

}

}

输出:

u8m21ercgelj

u8m21ercgelj

u8m21ercgelj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值