Класс RegexOption
Класс RegexOption представляет собой перечисление (enum class),
которое содержит различные опции для настройки поведения
регулярных выражений. Эти опции используются при создании
объекта Regex для изменения стандартного поведения
поиска и сопоставления с шаблоном.
Импорт
import kotlin.text.RegexOption
Синтаксис
enum 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 для поиска без учета регистра:
val regex = Regex("hello", setOf(RegexOption.IGNORE_CASE))
val res = regex.containsMatchIn("HELLO world")
println(res)
Результат выполнения кода:
Boolean true
Пример
Использование опции MULTILINE для поиска в многострочном тексте:
val text = "first line\nsecond line\nthird line"
val regex = Regex("^second", setOf(RegexOption.MULTILINE))
val res = regex.find(text)?.value
println(res)
Результат выполнения кода:
String "second"
Пример
Использование опции DOT_MATCHES_ALL для поиска с символом точки:
val 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")
Результат выполнения кода:
Without DOT_MATCHES_ALL: false
With DOT_MATCHES_ALL: true
Пример
Комбинирование нескольких опций с помощью оператора or:
val 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)
Результат выполнения кода:
List<String> ["TEST", "Test", "test"]
Смотрите также
-
функцию
contains,
для проверки наличия подстроки