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

Именованный карман в регулярных выражениях в Rust

Внутри круглых скобок имя пишут через запись (?P<name>...). Такой карман достают не по номеру, а по выбранному имени в результате поиска.

Разберем ключ и значение в простой записи:

use regex::Regex; fn main() { let re = Regex::new(r"(?P<key>\w+)=(?P<val>\d+)").expect("bad pattern"); let line = "id=7 mode=2"; if let Some(cap) = re.captures(line) { if let Some(k) = cap.name("key") { println!("{}", k.as_str()); } if let Some(v) = cap.name("val") { println!("{}", v.as_str()); } } }

Имена удобны, когда групп несколько и номера легко перепутать после правки шаблона:

use regex::Regex; fn main() { let re = Regex::new(r"(?P<h>\d{2}):(?P<m>\d{2})").expect("bad pattern"); let line = "time 10:30"; if let Some(cap) = re.captures(line) { if let Some(h) = cap.name("h") { if let Some(m) = cap.name("m") { println!("{}:{}", h.as_str(), m.as_str()); } } } }

Дана строка:

let line = "email:ann@mail.com";

Выделите локальную часть до "@" в именованный карман и выведите ее.

Дана строка:

let line = "v1.2.3";

Сохраните три числа версии в карманы "major", "minor" и "patch" и выведите их через точку.

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