Первая замена в регулярных выражениях в Rust
Замена одного совпадения работает как полная замена, но останавливается после первого найденного куска. Хвост строки остается как был.
Сравним одну замену и замену всех на одной строке:
use regex::Regex;
fn main() {
let re = Regex::new(r"\d").expect("bad pattern");
let line = "a1b2c3";
println!("{}", re.replace(line, "X"));
println!("{}", re.replace_all(line, "X"));
}
В строке подстановки можно использовать карман и для первой замены:
use regex::Regex;
fn main() {
let re = Regex::new(r"(\w+)@(\w+)").expect("bad pattern");
let line = "a@m b@n";
let out = re.replace(line, "$2@$1");
println!("{}", out);
}
Дана строка:
let line = "foo bar foo";
Замените только первое "foo"
на "baz" и выведите строку.
Дана строка:
let line = "1-2-3-4";
Замените первый дефис на ":",
не меняя остальные.