Если вам нужно решение brandname®, рассмотрите возможность использования метода Apache после удаления строки запроса, если она существует:
String url = "https://your_url/logo.svg?position=5";
url = url.replaceAll("\\?.*$", "");
String ext = FilenameUtils.getExtension(url);
System.out.println(ext);
Если вы хотите использовать однострочник, который даже не требуетвнешней библиотеки, затем рассмотрите эту опцию, используя String#replaceAll
:
String url = "https://your_url/logo.svg?position=5";
String ext = url.replaceAll(".*/[^.]+\\.([^?]+)\\??.*", "$1");
System.out.println(ext);
svg
Вот объяснение шаблона регулярного выражения, использованного выше:
.*/ match everything up to, and including, the LAST path separator
[^.]+ then match any number of non dots, i.e. match the filename
\. match a dot
([^?]+) match AND capture any non ? character, which is the extension
\??.* match an optional ? followed by the rest of the query string, if present