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

Инверсия набора в регулярных выражениях в Rust

Крышка в самом начале набора после открывающей квадратной скобки инвертирует смысл: совпадает любой один символ, которого нет в списке или диапазоне справа от крышки.

Так удобно пропускать все, кроме цифр, или резать текст до первого запрещенного знака:

use regex::Regex; fn main() { let re = Regex::new(r"[^0-9]+").expect("bad pattern"); let line = "12abc34def56"; println!("{}", re.replace_all(line, "|")); }

Инвертированный набор часто комбинируют с повторением, чтобы съесть хвост до разделителя:

use regex::Regex; fn main() { let re = Regex::new(r"[^;]+").expect("bad pattern"); let line = "one;two;three"; for part in re.find_iter(line) { println!("{}", part.as_str()); } }

Дана строка:

let line = "name=Ann age=20";

Возьмите куски между "=" и пробелом через набор все кроме пробела и выведите их по очереди.

Дана строка:

let line = "tab\there";

Замените подряд идущие символы, не являющиеся буквой "t", на один "+" в начале строки.

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