Используя регулярное выражение Rust в crate, как получить позицию для группы?

#rust

#Ржавчина

Вопрос:

Пожалуйста, дайте мне знать, как получить позицию для соответствующей группы, используя регулярное выражение Rust в crate.

Я нашел, как сопоставить регулярное выражение с текстом следующим образом.

 extern crate regex;
use regex::Regex;

fn main() {
    let str = "ABC 01 D2E";

    let re = Regex::new(r"(s)(d )(s)").unwrap();
    let caps = re.captures(str).unwrap();
    println!("{}", caps.get(2).unwrap().as_str()); // I expect "01" on stdout.
}
  

Хотя я до сих пор не знаю (как получить), где «01» находится в тексте. То есть индекс «0» на «ABC 01 D2E».

Ответ №1:

Captures::get возвращает an Option<Match>> , поэтому вы можете использовать Match::start для получения начального индекса:

 println!("{}", caps.get(2).unwrap().start());
// prints 4