Метод rmatches
Метод rmatches создает итератор по всем непересекающимся совпадениям с заданным шаблоном в строке. В отличие от метода matches, который ищет совпадения слева направо, данный метод просматривает строку в обратном порядке - с конца к началу. Параметром метод принимает шаблон, который нужно найти. Шаблоном может быть строка, символ или замыкание, определяющее условие совпадения.
Синтаксис
str.rmatches(pat)
Пример
Давайте найдем все вхождения подстроки "ab" в строке "ababab", двигаясь с конца:
fn main()
{
let res: Vec<&str> = "ababab".rmatches("ab").collect();
println!("{:?}", res);
}
Результат выполнения кода:
["ab", "ab", "ab"]
Пример
Давайте сравним порядок обхода для методов matches и rmatches на строке "1234512345" с шаблоном "123":
fn main()
{
let forward: Vec<&str> = "1234512345".matches("123").collect();
let reverse: Vec<&str> = "1234512345".rmatches("123").collect();
println!("{:?}", forward);
println!("{:?}", reverse);
}
Результат выполнения кода:
["123", "123"]
["123", "123"]
Пример
Давайте используем замыкание в качестве шаблона, чтобы найти цифры в строке "1a2b3c", начиная с конца:
fn main()
{
let res: Vec<&str> = "1a2b3c".rmatches(char::is_numeric).collect();
println!("{:?}", res);
}
Результат выполнения кода:
["3", "2", "1"]
Смотрите также
-
метод
matches,
который ищет совпадения слева направо -
метод
rmatch_indices,
который возвращает позиции совпадений при поиске с конца -
метод
rfind,
который находит последнее вхождение подстроки -
метод
rsplit,
который разбивает строку справа налево