我正在將一個多元化器移植到Rust中,並且我在正則表達式中遇到了一些困難。我無法像我所期望的那樣使用Regex::replace()
方法替換已編號的捕獲組。例如,下面顯示一個空字符串:無法獲得`Regex :: replace()`來替換已編號的捕獲組
let re = Regex::new("(m|l)ouse").unwrap();
println!("{}", re.replace("mouse", "$1ice"));
我希望它打印 「老鼠」,因爲它在JavaScript(或斯威夫特,Python和C#或轉到)確實
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。
我無法相信我錯過了。我必須讀過那部分20次。這很好用!謝謝! –