这个想法是根据给定的单词数量,通过分隔符将句子中的单词分开。在此示例中,计数为2:
my.name <- c("Remi Whatname Say again")
结果应该是:
"Remi Whatname * Say again"
这是我能走多远:
gsub('([[:alpha:]]{2,})','\\1 *\\2',my.name,perl=T)
> my.name
"Remi * Whatname * Say * again *"
任何想法如何改进我的模式匹配,以便在检测到连续2个单词之后减少替换?多谢你们。
答案 0 :(得分:1)
> x <- c("Remi Whatname Say again", "Hi how ru?")
> gsub("(\\S+\\s+\\S+)\\b(?!$)", "\\1 *", x, perl=T)
[1] "Remi Whatname * Say again" "Hi how * ru?"
或
正如@Mariano所说,
gsub("((?:\\S+\\s+){2})", "\\1* ", x, perl=T)
答案 1 :(得分:0)
您正在搜索长度至少为2的字符串,但不包括空格。最简单的 - 尽管可能不是最干净的只是将要求添加到您已经尝试过的内容中:
gsub('([[:alpha:]]{2,}[[:space:]][[:alpha:]]{2,})','\\1 *\\2',my.name,perl=T)
答案 2 :(得分:0)