Функция escape
Функция escape преобразует строку, экранируя все специальные символы,
которые имеют особое значение в регулярных выражениях. Это полезно, когда
необходимо искать строку, содержащую специальные символы.
Для экранировки функция использует специальные метасимволы \Q и \E:
Все символы между этими символами воспринимаются как обычные литералы,
а не как специальные символы регулярных выражений. Это безопасный способ экранировать
все специальные символы в строке.
Функция экранирует следующие символы: . + * ? ^ $ [ ] ( ) { } | \
Импорт
import kotlin.text.Regex
Синтаксис
fun escape(literal: String): String
Пример
Экранируем строку с специальными символами:
val input = "file.txt"
val res: String = Regex.escape(input)
println(res)
Результат выполнения кода:
\Qfile.txt\E
Пример
Экранируем строку с несколькими специальными символами:
val input = "price: .99+tax"
val res: String = Regex.escape(input)
println(res)
Результат выполнения кода:
\Qprice: .99+tax\E
Пример
Используем экранированную строку для поиска значения:
val searchText = "file.txt"
val escapedPattern = Regex.escape(searchText)
val regex = Regex(escapedPattern)
val input1 = "download file.txt please"
val input2 = "download filextxt please"
println(regex.containsMatchIn(input1))
println(regex.containsMatchIn(input2))
Результат выполнения кода:
true
false
Пример
Экранирование строки с метасимволами:
val input = "a+b*c?d[e]f{g}h(i)j|k\l"
val res: String = Regex.escape(input)
println(res)
Результат выполнения кода:
\Qa+b*c?d[e]f{g}h(i)j|k\l\E
Смотрите также
-
функцию
escapeReplacement,
которая экранирует символы строки замены -
функцию
matchEntire,
для проверки полного соответствия строки регулярному выражению -
функцию
replace,
которая заменяет совпадения в строке