Функция find

Функция find выполняет поиск первого вхождения, соответствующего регулярному выражению, в строке. Принимает объект Regex в качестве параметра. Возвращает объект MatchResult или null, если совпадений не найдено.

Синтаксис

kotlinfun CharSequence.find(
  regex: Regex,
  startIndex: Int = 0
): MatchResult?

Пример

Найдем первое вхождение цифры в строке с помощью регулярного выражения:

kotlinval text = "price: 1500, discount: 200"
val result = text.find(Regex("\\d+"))
println(result?.value)

Результат выполнения кода:

kotlin1500

Пример

Найдем первое email-сообщение в тексте:

kotlinval 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)

Результат выполнения кода:

kotlininfo@company.com

Пример

Найдем первое слово, начинающееся с заглавной буквы:

kotlinval text = "regular expressions in Kotlin are very powerful"
val result = text.find(Regex("[А-ЯA-Z][а-яa-z]*"))
println(result?.value)

Результат выполнения кода:

kotlinString "Kotlin"

Пример

Попробуем найти несуществующее соответствие:

kotlinval text = "This is plain text without numbers"
val result = text.find(Regex("\\d+"))
println(result)

Результат выполнения кода:

kotlinnull

Работа с MatchResult

Объект MatchResult содержит полезную информацию о найденном совпадении:

kotlinval 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}")
}

Смотрите также

  • функцию findAll,
    которая ищет все вхождения регулярного выражения
  • функцию matches,
    которая проверяет полное соответствие строки регулярному выражению
  • функцию replace,
    которая заменяет вхождения регулярного выражения