Мое требование - проверить URL в строке с помощью регулярных выражений. Я использую Pattern и Matcher, чтобы найти, содержит ли строка URL-адрес
val pattern = Pattern.compile(HyperlinkParser.validRegex.toString())
val matcher = pattern.matcher(htmlParsedMessage) //"abcd www.google.com def"
while (matcher.find()) {
val url = matcher.group()//contains the required url but it returns "www.".Expected "www.google.com"
val indicesPair = Pair(matcher.start(), matcher.end())
hyperlinkStartEndIndicesList.add(indicesPair)
}
matcher.reset()
Где HyperlinkParser.validRegex
равно
private const val regularExpression = "(?:(?:https?|ftp|file):|www.|ftp.)(?:([-A-Z0-9+&@#/%=~_|\$?!:,.]*)|[-A-Z0-9+&@#/%=~_|\$?!:,.])*(?:([-A-Z0-9+&@#/%=~_|\$?!:,.]*)|[A-Z0-9+&@#/%=~_|\$])"
val validRegex = Regex(regularExpression,RegexOption.IGNORE_CASE)
Я ожидаю URL-адрес "www.google.com" но он возвращает «www.».
Любые идеи, в чем может быть проблема. Любая помощь будет принята.