Метод captures
Метод captures выполняет поиск по регулярному выражению
в переданной строке и возвращает первую найденную группу захвата.
Он возвращает значение типа Option<Captures>:
Some, если совпадение найдено, и None в противном случае.
Параметром метод принимает строку, в которой нужно выполнить поиск.
Основное отличие от метода find заключается в том, что
captures позволяет получить не только само совпадение,
но и все группы захвата, определённые в регулярном выражении
с помощью круглых скобок.
Синтаксис
regex.captures(text)
Пример
Давайте найдём первое совпадение по регулярному выражению
r"(\d+)-(\d+)" в строке "123-456"
и извлечём группы захвата:
use regex::Regex;
fn main()
{
let re = Regex::new(r"(\d+)-(\d+)").unwrap();
let text = "123-456";
match re.captures(text)
{
Some(caps) =>
{
println!("Full match: {}", &caps[0]);
println!("First group: {}", &caps[1]);
println!("Second group: {}", &caps[2]);
}
None => println!("No match found"),
}
}
Результат выполнения кода:
Full match: 123-456
First group: 123
Second group: 456
Пример
Давайте попробуем найти совпадение по регулярному выражению
r"(\d+)-(\d+)" в строке "abcde",
которая не содержит цифр:
use regex::Regex;
fn main()
{
let re = Regex::new(r"(\d+)-(\d+)").unwrap();
let text = "abcde";
match re.captures(text)
{
Some(caps) => println!("Full match: {}", &caps[0]),
None => println!("No match found"),
}
}
Результат выполнения кода:
No match found
Пример
Давайте извлечём именованные группы захвата
из строки "John Smith" с помощью
регулярного выражения r"(?P<first>\w+)\s(?P<last>\w+)":
use regex::Regex;
fn main()
{
let re = Regex::new(r"(?P<first>\w+)\s(?P<last>\w+)").unwrap();
let text = "John Smith";
if let Some(caps) = re.captures(text)
{
println!("First name: {}", caps.name("first").unwrap().as_str());
println!("Last name: {}", caps.name("last").unwrap().as_str());
}
}
Результат выполнения кода:
First name: John
Last name: Smith
Смотрите также
-
метод
captures_iter,
который возвращает итератор по всем группам захвата -
метод
find,
который возвращает первое совпадение без групп захвата -
класс
Captures,
который хранит результаты захвата групп -
метод
is_match,
который проверяет наличие совпадения в строке