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

Карманы в регулярных выражениях в Rust

Когда шаблон содержит группы в круглых скобках, поиск с карманами возвращает не только весь фрагмент, но и части по номерам. Нулевой карман - все совпадение целиком.

Достанем день, месяц и год из записи через три группы:

use regex::Regex; fn main() { let re = Regex::new(r"(\d{2})\.(\d{2})\.(\d{4})").expect("bad pattern"); let line = "date 31.12.2024 end"; if let Some(cap) = re.captures(line) { if let Some(d) = cap.get(1) { println!("{}", d.as_str()); } if let Some(m) = cap.get(2) { println!("{}", m.as_str()); } if let Some(y) = cap.get(3) { println!("{}", y.as_str()); } } }

Если группа не участвовала в совпадении, запрос по ее номеру вернет пустой вариант. Проверяйте наличие перед чтением текста:

use regex::Regex; fn main() { let re = Regex::new(r"(a)(b)?").expect("bad pattern"); let line = "a"; if let Some(cap) = re.captures(line) { println!("{}", cap.get(2).is_none()); } }

Дана строка:

let line = "user:Ann score:9";

Выделите имя после "user:" и число после "score:" в отдельные карманы и выведите оба.

Дана строка:

let line = "ab";

Скажите, что лежит в кармане ноль для шаблона с двумя группами по одной букве.

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