Якорь ^
означает, что регулярное выражение может совпадать только в начале строки.Попробуйте удалить его.
Кроме того, похоже, что вы имеете в виду $0
, а не $1
, поскольку вы хотите получить весь матч, а не первую группу захвата, а именно (https?|ftp|file)
.
Подводя итог, у меня работает следующее:
private String fixLinks(String body) {
String regex = "(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
body = body.replaceAll(regex, "<a href=\"$0\">$0</a>");
Log.d(TAG, body);
return body;
}