替换以R中的特定字符开头的单词

时间:2013-09-12 20:19:56

标签: regex r

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

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

# [1] "MM, Rome, Ralf" 

提前致谢

1 个答案:

答案 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”!