#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