我想用不同的单词替换以给定字符开头的所有单词。尝试了gsub
和str_replace_all
但收效甚微。在这个例子中,我想用MM替换所有以R开头的单词。 gsub
只能正确替换一次:
gsub("^R*\\w+", "MM", "Red, Rome, Ralf")
# [1] "MM, Rome, Ralf"
提前致谢
答案 0 :(得分:6)
您必须删除字符串开始锚点(^
)或使用单词向量:
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”!