Группы символов в регулярках в Rust
Короткие записи с обратным слэшем обозначают частые классы символов. Класс цифры совпадает с одной латинской цифрой от нуля до девяти, класс слова - с буквой, цифрой или подчеркиванием в кодировке ASCII.
Русские буквы в эти классы не входят. Для кириллицы позже возьмем свойство Юникода, а пока проверим поведение на латинице:
use regex::Regex;
fn main() {
let digits = Regex::new(r"\d+").expect("bad pattern");
let words = Regex::new(r"\w+").expect("bad pattern");
let line = "id_12 end";
println!("{}", digits.replace_all(line, "#"));
println!("{}", words.replace_all("a1 _b", "!"));
}
Класс нецифры, небуквы и пробельного символа строят добавлением крышки перед буквой класса. Так удобно вырезать разделители:
use regex::Regex;
fn main() {
let re = Regex::new(r"\S+").expect("bad pattern");
let line = " hello world ";
for part in re.find_iter(line) {
println!("{}", part.as_str());
}
}
Дана строка:
let line = "room 5 floor 12";
Замените каждое число из ASCII-цифр на
"N".
Дана строка:
let line = "word1 word2";
Скажите, войдет ли символ подчеркивания в совпадение с классом слова и почему.
Дана строка:
let line = "a\tb\nc";
Подберите класс, который найдет каждый непробельный символ по отдельности.