2

我想用不同的单词替换所有以给定字符开头的单词。尝试过gsubstr_replace_all但收效甚微。在这个例子中,我想用 MM 替换所有以 R 开头的单词。gsub仅正确替换一次:

gsub("^R*\\w+", "MM", "Red, Rome, Ralf")

# [1] "MM, Rome, Ralf" 

提前致谢

4

1 回答 1

7

您必须删除字符串起始锚 ( ^) 或使用单词向量:

gsub("\\bR\\w+", "MM", "Red, Rome, Ralf")
#[1] "MM, MM, MM"


gsub("^R\\w+", "MM", c("Red", "Rome", "Ralf"))
#[1] "MM" "MM" "MM"

此外,您可能想要“R”而不是“R*”,因为后者可以匹配 0 个或多个“R”实例。上面的正则表达式只匹配具有 2 个或更多字符的单词,其中第一个字符必须是“R”。最后一个正则表达式仅匹配字符串开头的单词。

感谢@flodel 指出第一个正则表达式中缺少的单词边界“\ b”!

于 2013-09-12T20:27:02.667 回答