Определить и извлечь URL-адрес из строки?

Это простой вопрос, но я его просто не понимаю. Я хочу определить URL в строке и заменить их более короткими.

Я нашел это выражение из stackoverflow, но результат просто http

Pattern p = Pattern.compile("\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]",Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(str);
        boolean result = m.find();
        while (result) {
            for (int i = 1; i <= m.groupCount(); i++) {
                String url=m.group(i);
                str = str.replace(url, shorten(url));
            }
            result = m.find();
        }
        return html;

Есть ли идея получше?

40
задан Shisoft 19 April 2011 в 08:24
поделиться