【发布时间】:2017-06-02 15:50:06
【问题描述】:
我正在将复数词移植到 Rust,但我在使用正则表达式时遇到了一些困难。我无法使用Regex::replace() 方法来替换我所期望的编号捕获组。例如,下面显示一个空字符串:
let re = Regex::new("(m|l)ouse").unwrap();
println!("{}", re.replace("mouse", "$1ice"));
我希望它打印“老鼠”,就像它在 JavaScript(或 Swift、Python、C# 或 Go)中所做的那样
var re = RegExp("(m|l)ouse")
console.log("mouse".replace(re, "$1ice"))
我应该使用什么方法来代替Regex::replace()?
检查Inflector crate,我看到它提取了第一个捕获组,然后将后缀附加到捕获的文本中:
if let Some(c) = rule.captures(&non_plural_string) {
if let Some(c) = c.get(1) {
return format!("{}{}", c.as_str(), replace);
}
}
但是,鉴于 replace 在我使用过正则表达式的所有其他语言中都可以使用,我希望它也可以在 Rust 中使用。
【问题讨论】: