I think the most concise way I found is to use @Jonathan Feenstra suggestion with some destructuring:
if let Some((_, [_, name, company])) =
pattern1.captures(&text).map(|capture| capture.extract()) {
do_something_with(name, company);
}
else if pattern2.is_match(&text) {
do_something_else();
}
}