我在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");