Поиск URL в String. Java

Рейтинг: 0Ответов: 1Опубликовано: 06.06.2023

У меня условно есть строка:

String text = "Привет, смотри: https://www.youtube.com/";

Мне нужен метод который разделит строку на Привет, смотри: и https://www.youtube.com/

Не знаю как реализовать, найти какой-то способ не удалось.

Ответы

▲ 0Принят

Если формат строки, содержащей 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: [ как тебе такое?]

И префикс, и суффикс в данном формате являются необязательными, то есть, будут являться пустыми строками.