Граница слов в регулярках в Rust
Запись \b обозначает границу слова:
место между символом класса слова и
символом вне этого класса. Сама граница
в совпадение не попадает.
Так замена затронет целое слово, а не кусок внутри другого слова:
use regex::Regex;
fn main() {
let re = Regex::new(r"\bcat\b").expect("bad pattern");
let line = "cat scatter cat";
println!("{}", re.replace_all(line, "dog"));
}
Две границы вокруг шаблона требуют отдельного слова из ASCII-букв и цифр:
use regex::Regex;
fn main() {
let re = Regex::new(r"\b\d+\b").expect("bad pattern");
let line = "id12 12ab 99";
for m in re.find_iter(line) {
println!("{}", m.as_str());
}
}
Дана строка:
let line = "the them theme";
Замените только отдельное слово
"the" на "*", не ломая
"them" и "theme".
Дана строка:
let line = "reform preform";
Найдите отдельное слово "form"
и скажите, сколько совпадений получится.