Метод unicode
Метод unicode класса RegexBuilder управляет
поддержкой Unicode при построении регулярного выражения.
Параметром метод принимает булево значение: true
включает поддержку Unicode, а false - отключает её.
По умолчанию поддержка Unicode включена. Метод возвращает
&mut RegexBuilder, что позволяет вызывать его в цепочке
с другими методами построителя.
Когда поддержка Unicode включена, такие конструкции, как
\w, \d и \s, соответствуют не только
ASCII-символам, но и символам из других языков и алфавитов.
Отключение Unicode может ускорить работу регулярного выражения,
но при этом оно перестанет корректно обрабатывать
не-ASCII символы.
Синтаксис
RegexBuilder::new(pattern).unicode(flag).build()
Пример
Давайте построим регулярное выражение с включённой поддержкой
Unicode и проверим, соответствует ли строка "abcde"
шаблону \w+:
use regex::RegexBuilder;
fn main()
{
let re = RegexBuilder::new(r"\w+")
.unicode(true)
.build()
.unwrap();
let res = re.is_match("abcde");
println!("{}", res);
}
Результат выполнения кода:
true
Пример
Давайте отключим поддержку Unicode и проверим, соответствует ли
строка "abcde" шаблону \w+:
use regex::RegexBuilder;
fn main()
{
let re = RegexBuilder::new(r"\w+")
.unicode(false)
.build()
.unwrap();
let res = re.is_match("abcde");
println!("{}", res);
}
Результат выполнения кода:
true
Пример
Давайте проверим, как поддержка Unicode влияет на совпадение
с не-ASCII символом. Строка "abcde" не содержит таких
символов, поэтому для наглядности проверим кириллическую
строку с отключённым Unicode:
use regex::RegexBuilder;
fn main()
{
let re = RegexBuilder::new(r"^\w+$")
.unicode(false)
.build()
.unwrap();
let res = re.is_match("абвгд");
println!("{}", res);
}
Результат выполнения кода:
false
При включённой поддержке Unicode аналогичное выражение успешно совпало бы с кириллической строкой.
Смотрите также
-
класс
RegexBuilder,
который используется для настройки и построения регулярных выражений -
метод
case_insensitive,
который включает или отключает регистронезависимый поиск -
метод
dot_matches_new_line,
который управляет соответствием точки символу перевода строки -
метод
build,
который создаёт регулярное выражение на основе настроек построителя