根据句子中的计数拆分单词
Split words based on count in a sentence
我们的想法是根据给定的单词数用分隔符拆分句子中的单词。在此示例中,计数为 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 个单词后才进行替换吗?谢谢你们。
> 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)
您正在搜索长度至少为 2 的字符串,但不包括 space。最简单的 - 尽管可以说不是最干净的只是将该要求添加到您已经尝试过的内容中:
gsub('([[:alpha:]]{2,}[[:space:]][[:alpha:]]{2,})','\1 *\2',my.name,perl=T)
((?:(?:\w+)\s+){2})(?=\w+)
您可以使用它并替换为 \1*
。查看演示。
我们的想法是根据给定的单词数用分隔符拆分句子中的单词。在此示例中,计数为 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 个单词后才进行替换吗?谢谢你们。
> 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)
您正在搜索长度至少为 2 的字符串,但不包括 space。最简单的 - 尽管可以说不是最干净的只是将该要求添加到您已经尝试过的内容中:
gsub('([[:alpha:]]{2,}[[:space:]][[:alpha:]]{2,})','\1 *\2',my.name,perl=T)
((?:(?:\w+)\s+){2})(?=\w+)
您可以使用它并替换为 \1*
。查看演示。