我在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中寻找这种方法。
答案 0 :(得分:1)
您可以使用以下正则表达式:
\/userAssets\/(?<userAssets>[^\/]+)\/
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");