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

Группирующие скобки в регулярках в Rust

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

Так же скобки открывают карман: найденный фрагмент можно будет достать по номеру позже. Сейчас нас интересует только группировка для повтора:

use regex::Regex; fn main() { let re = Regex::new(r"(ab)+").expect("bad pattern"); let out = re.replace_all("ab abab xab", "!"); println!("{}", out); }

Шаблон ищет одну или несколько пар "ab" подряд. Без скобок плюс относился бы только к букве "b".

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

use regex::Regex; fn main() { let re = Regex::new(r"(x(y)+)").expect("bad pattern"); let out = re.replace_all("xyy xyyy", "*"); println!("{}", out); }

Дана строка:

let line = "ha haha hahaha";

Сгрупируйте "ha" и замените каждую цепочку из двух и более таких кусков на "!".

Дана строка:

let line = "101 10101 1010101";

Найдите повторяющийся блок "10" один или более раз и замените его на "X".

Объясните, чем отличается шаблон ab+ от (ab)+ на строке "aab ab" при замене на звездочку.

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