Помогите с регулярным выражением для определения URL в строке - PullRequest
1 голос
/ 04 января 2011

Привет, ребята я нашел это регулярное выражение для обнаружения URL-адресов в строке и заключает их в тег

public static String detectUrls(String text) {
    String newText = text
            .replaceAll("(?<!http://)www\\.[\\w/%.\\-?&=]+", "http://$0")
            .replaceAll("(?:https?|ftps?|http?)://[\\w/%.\\-?&=]+",
                    "<a href='$0'>$0</a>");
    return newText;
}

но это регулярное выражение не работает со следующим шаблоном:

https://www.myserver.com

поэтому, пожалуйста, посоветуйте.

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Эта строка:

.replaceAll("(?<!http://)www\\.[\\w/%.\\-?&=]+", "http://$0")

Изменения https://www.myserver.com на https://http://www.myserver.com

Это точно, вы уже проинструктировали это. Вам необходимо добавить https и, вероятно, ftps? к виду сзади.

Вы также можете игнорировать протокол:

.replaceAll("(?<!://)www\\.", "http://$0")
1 голос
/ 04 января 2011

Я думаю, что это, возможно, вы хотите:

public static String detectLinks(String text) {
        String newText = text.replaceAll(
                "(?<!(http|https|ftps)://)www\\.[\\w/%.\\-?&=]+", "$0")
                .replaceAll("(?<!://)www\\.", "http://$0").replaceAll(
                        "(?:https?|ftps?|http?)://[\\w/%.\\-?&=+#]+",
                        "<a href='$0'>$0</a>")

        return newText;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...