Метод new класса RegexSet
Метод new класса RegexSet создаёт
набор регулярных выражений, которые можно
проверять одновременно за один проход по строке.
Параметром метод принимает итератор шаблонов
регулярных выражений. Возвращает результат
Result с объектом RegexSet или ошибкой.
Если хотя бы один шаблон некорректен, возвращается
ошибка.
Синтаксис
RegexSet::new(patterns)
Пример
Давайте создадим набор из двух шаблонов и проверим,
какие из них совпадают со строкой "abcde":
use regex::RegexSet;
fn main()
{
let set = RegexSet::new(&[
r"\d+",
r"abc",
]).unwrap();
let matches: Vec<usize> = set.matches("abcde").iter().collect();
println!("{:?}", matches);
}
Результат выполнения кода:
[1]
Пример
Давайте проверим, совпадает ли хотя бы один шаблон
из набора со строкой "12345":
use regex::RegexSet;
fn main()
{
let set = RegexSet::new(&[
r"\d+",
r"abc",
]).unwrap();
let res = set.is_match("12345");
println!("{}", res);
}
Результат выполнения кода:
true
Пример
Давайте создадим набор с некорректным шаблоном и посмотрим, как обрабатывается ошибка:
use regex::RegexSet;
fn main()
{
let res = RegexSet::new(&[
r"\d+",
r"(unclosed",
]);
match res
{
Ok(_) => println!("ok"),
Err(e) => println!("error: {}", e),
}
}
Результат выполнения кода:
error: regex parse error:
(unclosed
^
error: unclosed group