Функция find
Функция find выполняет поиск первого вхождения, соответствующего регулярному выражению, в строке.
Принимает объект Regex в качестве параметра. Возвращает объект MatchResult или null,
если совпадений не найдено.
Синтаксис
fun CharSequence.find(
regex: Regex,
startIndex: Int = 0
): MatchResult?
Пример
Найдем первое вхождение цифры в строке с помощью регулярного выражения:
val text = "price: 1500, discount: 200"
val result = text.find(Regex("\\d+"))
println(result?.value)
Результат выполнения кода:
1500
Пример
Найдем первое email-сообщение в тексте:
val text = "contacts: info@company.com, support@company.com"
val emailRegex = Regex("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}")
val result = text.find(emailRegex)
println(result?.value)
Результат выполнения кода:
info@company.com
Пример
Найдем первое слово, начинающееся с заглавной буквы:
val text = "regular expressions in Kotlin are very powerful"
val result = text.find(Regex("[А-ЯA-Z][а-яa-z]*"))
println(result?.value)
Результат выполнения кода:
String "Kotlin"
Пример
Попробуем найти несуществующее соответствие:
val text = "This is plain text without numbers"
val result = text.find(Regex("\\d+"))
println(result)
Результат выполнения кода:
null
Работа с MatchResult
Объект MatchResult содержит полезную информацию о найденном совпадении:
val text = "Date: 2024-03-15, time: 14:30"
val dateRegex = Regex("\\d{4}-\\d{2}-\\d{2}")
val result = text.find(dateRegex)
result?.let {
println("Found: ${it.value}")
println("Start index: ${it.range.first}")
println("End index: ${it.range.last}")
println("Groups: ${it.groupValues}")
}