Класс RegexOption

Класс RegexOption представляет собой перечисление (enum class), которое содержит различные опции для настройки поведения регулярных выражений. Эти опции используются при создании объекта Regex для изменения стандартного поведения поиска и сопоставления с шаблоном.

Импорт

kotlinimport kotlin.text.RegexOption

Синтаксис

kotlinenum class RegexOption {
  IGNORE_CASE,
  MULTILINE,
  LITERAL,
  UNIX_LINES,
  COMMENTS,
  DOT_MATCHES_ALL,
  CANON_EQ
}

Опции

IGNORE_CASE - игнорирует регистр символов при поиске соответствий.

MULTILINE - включает многострочный режим, где символы ^ и $ соответствуют началу и концу каждой строки, а не всего текста.

LITERAL - интерпретирует шаблон как буквальную строку, специальные символы теряют свое специальное значение.

UNIX_LINES - включает режим UNIX строк, где только символ \n считается признаком конца строки.

COMMENTS - разрешает использование комментариев и пробелов в шаблоне (пробелы игнорируются, # начинает комментарий до конца строки).

DOT_MATCHES_ALL - включает режим, где символ . соответствует любому символу, включая символы конца строки.

CANON_EQ - включает каноническое эквивалентное сравнение символов.

Пример

Использование опции IGNORE_CASE для поиска без учета регистра:

kotlinval regex = Regex("hello", setOf(RegexOption.IGNORE_CASE))
val res = regex.containsMatchIn("HELLO world")
println(res)

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

kotlinBoolean true

Пример

Использование опции MULTILINE для поиска в многострочном тексте:

kotlinval text = "first line\nsecond line\nthird line"
val regex = Regex("^second", setOf(RegexOption.MULTILINE))
val res = regex.find(text)?.value
println(res)

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

kotlinString "second"

Пример

Использование опции DOT_MATCHES_ALL для поиска с символом точки:

kotlinval text = "line1\nline2\nline3"
val regex1 = Regex("line1.line2")
val res1 = regex1.matches(text)

val regex2 = Regex("line1.line2", setOf(RegexOption.DOT_MATCHES_ALL))
val res2 = regex2.matches(text)

println("Without DOT_MATCHES_ALL: $res1")
println("With DOT_MATCHES_ALL: $res2")

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

kotlinWithout DOT_MATCHES_ALL: false
With DOT_MATCHES_ALL: true

Пример

Комбинирование нескольких опций с помощью оператора or:

kotlinval options = RegexOption.IGNORE_CASE or RegexOption.MULTILINE
val regex = Regex("^test", options)
val text = "TEST line1\nTest line2\ntest line3"
val matches = regex.findAll(text).map { it.value }.toList()
println(matches)

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

kotlinList<String> ["TEST", "Test", "test"]

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

  • функцию contains,
    для проверки наличия подстроки