gpt4 book ai didi

regex - 如何在正则表达式箱中获取匹配组的索引?

转载 作者:行者123 更新时间:2023-11-29 08:14:49 27 4
gpt4 key购买 nike

我只找到一种方法是使用 Captures iter 来检查哪个索引是 Some(..)。

let re = Regex::new(r"([a-zA-Z_][a-zA-Z0-9]*)|([0-9]+)|(\.)|(=)").unwrap();

for cap in re.captures_iter("asdf.aeg = 34") {
let mut index = 0;
for (i, name) in cap.iter().enumerate() {
if i == 0 {continue}
if let Some(_) = name {index = i; break;}
}
println!("group {:?}, match {:?}", index, cap.at(index).unwrap());
}

有什么好的方法吗?

最佳答案

我认为您的代码几乎是您所能得到的最接近的。这是一个稍微更地道的版本:

let re = Regex::new(r"([a-zA-Z_][a-zA-Z0-9]*)|([0-9]+)|(\.)|(=)").unwrap();

for cap in re.captures_iter("asdf.aeg = 34") {
let index = cap.iter().enumerate()
.skip(1) // skip the first group
.find(|t| t.1.is_some()) // find the first `Some`
.map(|t| t.0) // extract the index
.unwrap_or(0); // get the index
println!("group {:?}, match {:?}", index, cap.at(index).unwrap());
}

关于regex - 如何在正则表达式箱中获取匹配组的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com