Метод range
Метод range возвращает диапазон
позиций совпадения в виде структуры
Range. Этот диапазон указывает,
с какого байта начинается совпадение
и на каком байте заканчивается.
Метод не принимает параметров и
вызывается на объекте совпадения.
Синтаксис
match.range()
Пример
Давайте найдём диапазон совпадения
шаблона "[0-9]+" в строке
"abc12345":
use regex::Regex;
fn main()
{
let re = Regex::new("[0-9]+").unwrap();
let text = "abc12345";
let m = re.find(text).unwrap();
println!("{:?}", m.range());
}
Результат выполнения кода:
3..8
Пример
Давайте извлечём подстроку по полученному диапазону с помощью среза строки:
use regex::Regex;
fn main()
{
let re = Regex::new("[0-9]+").unwrap();
let text = "abc12345";
let m = re.find(text).unwrap();
let r = m.range();
let res = &text[r];
println!("{}", res);
}
Результат выполнения кода:
"12345"
Пример
Давайте сравним диапазон, возвращаемый
методом range, с позициями,
возвращаемыми методами start
и end:
use regex::Regex;
fn main()
{
let re = Regex::new("[a-z]+").unwrap();
let text = "12345abcde";
let m = re.find(text).unwrap();
println!("{:?}", m.range());
println!("{}", m.start());
println!("{}", m.end());
}
Результат выполнения кода:
5..10
5
10