Особенности дефиса внутри наборов в Rust
Дефис между двумя символами внутри набора обозначает диапазон. Если дефис стоит в начале или в конце списка, его читают как обычный знак минус.
Диапазон цифр в середине набора покрывает все коды от левого символа до правого включительно:
use regex::Regex;
fn main() {
let re = Regex::new(r"[1-3]+").expect("bad pattern");
let line = "012345";
println!("{}", re.replace_all(line, "x"));
}
Чтобы найти сам дефис, поставьте его у края набора или экранируйте:
use regex::Regex;
fn main() {
let re = Regex::new(r"[-x]+").expect("bad pattern");
let line = "a-b x-x";
println!("{}", re.replace_all(line, "!"));
}
Дана строка:
let line = "A-C AZ";
Найдите только последовательность
"A-C" с дефисом посередине, не
захватывая лишние буквы.
Дана строка:
let line = "zip zap";
Подберите набор с диапазоном a-z
для первых трех букв слова "zip"
и замените на "*".
Скажите, чем опасен дефис в середине набора [a-z-0] по сравнению с записью [-a-z0].