Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpRgPs 185 of 288 menu
◀ ▶

Позиция совпадения в регулярных выражениях в Rust

У найденного фрагмента есть смещения в исходной строке. Начало и конец считают в байтах UTF-8, а не в номерах символов Юникода.

После поиска можно вывести сам текст и границы:

use regex::Regex; fn main() { let re = Regex::new(r"\d+").expect("bad pattern"); let line = "id:42 tail"; if let Some(m) = re.find(line) { println!("{} {} {}", m.as_str(), m.start(), m.end()); } }

Сравнение начала с нулем показывает, совпало ли с самого начала строки. Это замена отдельной проверки совпадения с начала строки в других библиотеках:

use regex::Regex; fn main() { let re = Regex::new(r"[A-Z]\w+").expect("bad pattern"); let line = "Rust lang"; if let Some(m) = re.find(line) { println!("{}", m.start() == 0); } }

Дана строка:

let line = "xx hello";

Найдите слово "hello" и выведите его начало и конец в байтах.

Дана строка:

let line = "start end";

Проверьте по позиции начала, совпадает ли первое слово с началом строки.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить