从请求网址中提取特定字段

时间:2019-09-24 08:26:23

标签: java

我在Java中有一个REST API,请求网址为

/protected/{accountId}/accountassets/*

现在,大多数使用以下格式调用此API /protected/{accountId}/accountassets/{userId}/userAssets/{msId}/*

如果使用上述网址格式调用API,则需要在“ userAssets”之后提取值,即msId值。

从长远来看,我可以先在URL中找到userAssets的索引,然后遍历直到找到第二个“ /”,然后我的结果就会在那里。

但是在Java中已经有一些内置的方法了。

例如在lua中有一种方法string.match。在上面的示例中,我可以使用string.match(url,'.*/userAssets/(%d+).*')在lua中提取msId。

我正在尝试在Java中寻找这种方法。

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

\/userAssets\/(?<userAssets>[^\/]+)\/

regex101.com


String url = "/protected/{accountId}/accountassets/{userId}/userAssets/{msId}/*";

String regex = "\\/userAssets\\/(?<userAssets>[^\\/]+)\\/";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(url);

if (matcher.find())
    System.out.println(matcher.group("userAssets"));    // {msId}
else
    System.out.println("not found");