我在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中寻找这种方法。

最佳答案

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

\/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");

10-06 09:17