Тип Match
Тип Match представляет собой структуру,
которая хранит информацию об одном найденном
совпадении регулярного выражения в строке. Он
содержит ссылку на исходный текст и диапазон
байтов, в котором находится совпадение. Объекты
этого типа возвращают такие методы, как
find и элементы итератора
find_iter.
Синтаксис
Match<'t>
Параметр 't - это время жизни ссылки
на исходную строку, к которой привязано
совпадение.
Основные методы
Тип Match предоставляет следующие методы:
-
as_str- возвращает найденную подстроку -
start- возвращает начальную позицию совпадения -
end- возвращает конечную позицию совпадения -
range- возвращает диапазон позиций совпадения
Пример
Давайте найдём первое совпадение регулярного
выражения в строке и выведем его через метод
as_str:
use regex::Regex;
fn main()
{
let re = Regex::new(r"\d+").unwrap();
let text = "abc123def456";
let res = re.find(text).unwrap();
println!("{}", res.as_str());
}
Результат выполнения кода:
"123"
Пример
Давайте получим начальную и конечную позиции
совпадения с помощью методов start и
end:
use regex::Regex;
fn main()
{
let re = Regex::new(r"\d+").unwrap();
let text = "abc123def456";
let res = re.find(text).unwrap();
println!("start: {}, end: {}", res.start(), res.end());
}
Результат выполнения кода:
start: 3, end: 6
Пример
Давайте переберём все совпадения в строке
с помощью итератора find_iter, который
возвращает объекты типа Match:
use regex::Regex;
fn main()
{
let re = Regex::new(r"\d+").unwrap();
let text = "abc123def456";
for m in re.find_iter(text) {
println!("{}", m.as_str());
}
}
Результат выполнения кода:
"123"
"456"
Пример
Давайте получим диапазон позиций совпадения
через метод range:
use regex::Regex;
fn main()
{
let re = Regex::new(r"[a-z]+").unwrap();
let text = "123abc456";
let res = re.find(text).unwrap();
println!("{:?}", res.range());
}
Результат выполнения кода:
3..6