使用 Rust 的板条箱正则表达式,如何获取组的位置?

ska*_*ori 5 rust

请让我知道如何使用 Rust 的板条箱正则表达式获取匹配组的位置。

我发现了如何将正则表达式与文本进行匹配,如下所示。

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.
}
Run Code Online (Sandbox Code Playgroud)

不过,我仍然不知道(如何获取)“01”在文本上的位置。即,“ABC 01 D2E”上的索引“0”。

Apl*_*123 7

Captures::get返回一个Option<Match>>,因此您可以使用它Match::start来获取起始索引:

println!("{}", caps.get(2).unwrap().start());
// prints 4
Run Code Online (Sandbox Code Playgroud)