Все совпадения в регулярных выражениях в Rust
Если подходящих кусков несколько, один поиск вернет только первый. Обход по итератору находит каждое следующее совпадение слева направо.
Соберем все числа из строки:
use regex::Regex;
fn main() {
let re = Regex::new(r"\d+").expect("bad pattern");
let line = "a1 b22 c333";
for m in re.find_iter(line) {
println!("{}", m.as_str());
}
}
Отдельный обход возвращает карманы для каждого совпадения, если в шаблоне есть группы:
use regex::Regex;
fn main() {
let re = Regex::new(r"(\w)=(\d)").expect("bad pattern");
let line = "a=1 b=2 c=3";
for cap in re.captures_iter(line) {
if let Some(k) = cap.get(1) {
if let Some(v) = cap.get(2) {
println!("{}:{}", k.as_str(), v.as_str());
}
}
}
}
Дана строка:
let line = "one two three four";
Выведите каждое слово из латинских букв на отдельной строке.
Дана строка:
let line = "x=1 x=2 y=3";
Обойдите все пары буква-цифра через
карманы и посчитайте, сколько раз
встретилась буква "x".