Шаблон регулярных выражений не работает, когда заканчивается без пробела - PullRequest
0 голосов
/ 11 октября 2018

Я хочу удалить строки, содержащие http или https.У меня есть следующий сегмент кода:

    String line="abc http://someurl something https://someurl";

    if (line.contains("https") || line.contains("http")) {
        System.out.println(line);
        String x = line.replaceAll("https?://.*?\\s+", " ");
        System.out.println(x);
    }

Вывод: abc something https://someurl (не удаляет конечный URL)

Желаемый вывод: abc something

Я предполагаю, что это простое изменение в регулярном выражении ...

Редактировать: Извините, предыдущий пример не содержал фактический URL после http.

1 Ответ

0 голосов
/ 11 октября 2018

Ваше регулярное выражение:

https?://.*?\\s+

Этот окончательный токен \s+ означает один или несколько пробелов .Если вы хотите удалить подстроки, которые не обязательно обязательно заканчиваются пробелами, вы можете повторить с * вместо + - * означает повторение предыдущего токена ноль или более раз:

String x = line.replaceAll("https?://.*?\\s*", " ");

Тем не менее, если ваши URL-адреса действительны и не содержат пробелов, вероятно, было бы целесообразнее сопоставить непробельные символы с \S и заменитьс пустой строкой, вместо поиска пробелов, сопоставьте их, а затем замените на другой пробел:

String x = line.replaceAll("https?://\\S*", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...