如何从R中的字符串中删除特定模式?

时间:2014-05-22 08:16:24

标签: regex r gsub

我有这个字符串(例如)。

str <- "T gwed is atyrt mtt yfdgfg grter effgf y"

我想从这个字符串中删除单独出现的字母(在这种情况下,&#39; T&#39;在这种情况下,最后是&#39; y&#39;并且输出应该是

"gwed is atyrt mtt yfdgfg grter effgf"

我用过这个

str <- gsub("[A-Za-z] ", "", str)

但它结果就是这样。

[1] "gweiatyrmtyfdgfgrtey"

这里考虑像&#34; gwed&#34;也因此它合并了字符串的每个单词。

我如何实现目标?

另外,我有这么大的文本有成千上万的字符串(不只是一个字符串),所以在提供答案时请记住这一点。

2 个答案:

答案 0 :(得分:3)

str <- "T gwed is atyrt mtt yfdgfg grter effgf y"

gsub(" ?\\<[[:alpha:]]\\> ?", "", str)

## [1] "gwed is atyrt mtt yfdgfg grter effgf"

您需要使用特殊字符来表示字边界,即\\<\\>_?(其中_是空格)表示您还要删除单个字母(如果存在)周围的单个空格。有关详情,请参阅?regex

答案 1 :(得分:1)

不使用正则表达式的另一个选项:

xx <- unlist(strsplit(str, " "))
paste(xx[nchar(xx)>1],collapse=' ')

[1] "gwed is atyrt mtt yfdgfg grter effgf"