【发布时间】:2016-01-05 13:30:53
【问题描述】:
我希望能够将诸如“you are”替换为“I am”以及将“your”替换为“my”之类的短语。如何在保持代码 DRY 的同时做到这一点?
到目前为止,我有类似的东西......
let re = Regex::new(r"you are").unwrap();
re.replace_all("you are awesome and so is your hat", "I am")
但这只会取代“你是”而不是“我的”部分。
我认为理想情况下它看起来像
let re = Regex::new(r"your|you are").unwrap();
re.replace_all("you are awesome and so is your hat", fn_with_pattern_matching)
【问题讨论】:
-
写两个单独的 replace_all 语句怎么样?
-
你最后一次使用
fn_with_pattern_matching的sn-p 应该是可行的。请参阅regex文档中的示例:doc.rust-lang.org/regex/regex/enum.Regex.html#examples-2 不过,您可能需要使用捕获组来确定要使用哪个文本作为替换。 -
@BurntSushi5,是的,我尝试过使用捕获组,但我在理解文档时遇到了很多麻烦,似乎无法让它按预期工作
-
@BurntSushi5 我认为该方法还需要我明确识别捕获索引号,如果我不知道字符串是否包含这些短语,这是不可取的
-
请edit你的问题表明你已经尝试过。 Stack Overflow 不是其他人为您编写代码的服务。向我们展示您为实现
fn_with_pattern_matching而编写的内容,我们可以帮助实现这一目标。