Если формат строки, содержащей URL, условно известен "<префикс><суффикс>", то можно составить регулярное выражение и выбрать в нём соответствующие группы.
Группы могут быть именованными в виде (?<group_name>)
, или к ним можно обращаться по индексу, начиная с 1.
public static void parseUrl(String text) {
Pattern pattern = Pattern.compile("(?<prefix>.*?)(?<url>https?://\\S+)(?<suffix>.*)", Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(text);
if (m.find()) {
System.out.printf("prefix: [%s]%n", m.group("prefix")); // m.group(1)
System.out.printf("url : [%s]%n", m.group("url")); // m.group(2)
System.out.printf("suffix: [%s]%n", m.group("suffix")); // m.group(3)
}
else {
System.out.println("Неверный формат");
}
}
// тесты
parseUrl("Привет, смотри: https://www.youtube.com/");
System.out.println("-----");
parseUrl("Привет, смотри: https://www.youtube.com/ как тебе?");
System.out.println("-----");
parseUrl("https://www.youtube.com/ как тебе такое?");
Результаты
prefix: [Привет, смотри: ]
url : [https://www.youtube.com/]
suffix: []
-----
prefix: [Привет, смотри: ]
url : [https://www.youtube.com/]
suffix: [ как тебе?]
-----
prefix: []
url : [https://www.youtube.com/]
suffix: [ как тебе такое?]
И префикс, и суффикс в данном формате являются необязательными, то есть, будут являться пустыми строками.