Извлечь конкретное поле из URL запроса - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть API отдыха в Java с URL-адресом запроса как

/protected/{accountId}/accountassets/*

Теперь этот API в основном вызывается в следующем формате /protected/{accountId}/accountassets/{userId}/userAssets/{msId}/*

Inслучай, когда API вызывается с указанным выше шаблоном URL, мне нужно извлечь значение после «userAssets», то есть значение msId.

Я могу в долгом пути сначала найти индекс userAssets в моем URL-адресе, а оттуда пройти доЯ нахожу второй «/», и между этим мой результат будет там.

Но есть ли уже какой-то встроенный метод для этого в Java.

Например, в lua есть метод string.match.В приведенном выше примере я могу извлечь msId в lua, используя string.match(url,'.*/userAssets/(%d+).*').

Я пытаюсь найти такой метод в Java.

1 Ответ

1 голос
/ 24 сентября 2019

Вы можете использовать следующие регулярные выражения:

\/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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...