Я использую WebView в приложении для Android, написанном на Kotlin, для отображения некоторого расширенного текстового содержимого, которое передается через ответ API. Данные представлены в виде необработанного текста, смешанного с некоторыми компонентами HTML (ссылками), которые отображаются в приложении.
Целью написания этого фильтра Regex является сбор необработанных ссылок, не заключенных в теги <a>
, и их переформатирование, чтобы они широко отображались в веб-представлении.
Мои текущие попытки решить эту проблему включают использование replace()
со встроенной функцией для захвата ссылки и замены ее тегом <a>
.
У меня есть переопределенная функция, которая берет данные для загрузки в WebView и добавляет некоторые данные стиля, а также удаляет любые теги <iframe>
. Эти два компонента работают, однако моя замена с использованием pattern
для сопоставления URL не имеет никакого эффекта.
Дан список:
http://example.com
https://example.com
Ожидаю вывод:
<a href="http://example.com">auto link</a>
<a href="https://example.com">auto link</a>
Тем не менее, мой шаблон дает неизменный ввод.
Я использую шаблон соответствия URL, найденный здесь: https://mathiasbynens.be/demo/url-regex
val pattern = "@(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/[^\\s]*)?$@iS\n".toRegex()
data.replace(pattern) {
"<a href=\"${it.groupValues[1]}\">auto link</a>"
}
Log.i("TEST", data)
Эта функция не может заменить данные правильной ссылкой, когда я ее регистрирую, хотя я знаю, что шаблон соответствует ссылкам, которые я передаю.