Как обнаружить ссылки в тексте? - PullRequest
1 голос
/ 22 сентября 2010

привет всем, у меня есть текст, который может содержать ссылки, например:

"привет ..... посетите нас по http://www.google.com.eg, и для получения дополнительной информации, пожалуйста, свяжитесь с нами по http://www.myweb.com/help"

и я хочу найти и заменить любую ссылку следующей ссылкой

кто-нибудь знает, как это сделать?

, и у меня есть еще один вопрос: как любой веб-сайт, такой как stackoverflowобнаруживает ссылки в подобных сообщениях и выделяет их, чтобы кто-нибудь мог щелкнуть по ним и перейти по ссылке?

Ответы [ 2 ]

4 голосов
/ 22 сентября 2010

Используя java.util.regex , вы можете получить URL, найдя все, что соответствует регулярному выражению: https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?.

import java.util.regex.*;

Pattern pattern = Pattern.compile("https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?", Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
Matcher myMatcher = pattern.matcher(myStringWithUrls);
while (myMatcher.find()) {
    ...
}
0 голосов
/ 23 сентября 2010

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

...