Кажется, более ранние версии не поддерживают именованные группы.Согласно этому источнику, именованные группы были введены в Kotlin 1.2 .Удалите их, если вам не нужны эти подспаривания, и используйте для проверки только регулярное выражение.
Ваше регулярное выражение очень неэффективно, поскольку содержит много вложенных количественных групп.См. «Более чистую» версию этого ниже.
Кроме того, кажется, вы хотите проверить, есть ли совпадение регулярных выражений в вашей входной строке.Используйте Regex#containsMatchIn()
:
val urlRegex = "(?:(?:http|ftp)s?://)?[\\w:@.-]+\\.[\\w-]+(?::\\d+)?\\??[\\w.~:/?#\\[\\]@!$&'()*+,;=.%-]*"
val sampleUrl = "https://www.google.com"
val urlMatchers = Regex(urlRegex).containsMatchIn(sampleUrl)
println(urlMatchers) // => true
См. Демо Kotlin и демо regex .
Если вам нужночтобы проверить соответствие всей строки, используйте matches
:
Regex(urlRegex).matches(sampleUrl)
См. еще одну демонстрацию Kotlin .
Обратите внимание, что для определения регулярного выражения вам необходимо использовать Regex
конструктор класса.