Метод find
Метод find класса Regex выполняет поиск
первого совпадения с регулярным выражением в переданной
строке. Метод принимает строку &str или другой
тип, реализующий трейт IntoIterator, и возвращает
значение Option<Match>. Если совпадение найдено,
возвращается объект Match, содержащий информацию
о позиции и найденном фрагменте. Если совпадений нет,
возвращается None.
Синтаксис
regex.find(text)
Пример
Давайте найдём первое совпадение с шаблоном "\\d+"
в строке "abc 123 def 456":
use regex::Regex;
fn main()
{
let re = Regex::new(r"\d+").unwrap();
let res = re.find("abc 123 def 456");
match res
{
Some(m) => println!("{}", m.as_str()),
None => println!("no match"),
}
}
Результат выполнения кода:
"123"
Пример
Давайте выведем позицию найденного совпадения
с помощью методов start и end:
use regex::Regex;
fn main()
{
let re = Regex::new(r"\d+").unwrap();
if let Some(m) = re.find("abc 123 def 456")
{
println!("start: {}, end: {}", m.start(), m.end());
}
}
Результат выполнения кода:
start: 4, end: 7
Пример
Давайте проверим случай, когда совпадений нет:
use regex::Regex;
fn main()
{
let re = Regex::new(r"\d+").unwrap();
let res = re.find("abcde");
match res
{
Some(m) => println!("{}", m.as_str()),
None => println!("no match"),
}
}
Результат выполнения кода:
no match