Символ шляпки внутри наборов в Rust
Инверсия набора работает только если крышка стоит сразу после открывающей скобки. В любой другой позиции крышка внутри набора - обычный символ, который нужно найти в тексте.
Сравним набор с инверсией и набор, где крышка стоит в середине списка:
use regex::Regex;
fn main() {
let invert = Regex::new(r"[^a]+").expect("bad pattern");
let literal = Regex::new(r"[a^b]+").expect("bad pattern");
let line = "a^b xx a b";
println!("{}", invert.replace_all(line, "!"));
println!("{}", literal.replace_all(line, "!"));
}
Если крышка нужна в конце списка, ее тоже не путают с инверсией - достаточно перечислить ее как символ:
use regex::Regex;
fn main() {
let re = Regex::new(r"[0-9^]+").expect("bad pattern");
let line = "2^3 = 8";
println!("{}", re.replace_all(line, "#"));
}
Дана строка:
let line = "a^ a b";
Объясните, почему шаблон [^a] и [a^] дают разный результат на этой строке.
Дана строка:
let line = "x^y z";
Найдите фрагмент "x^y" через
набор с буквой и символом крышки.