在R中,如何在gsub中使用正则表达式[:punct:]?

时间:2012-05-24 14:13:19

标签: regex r

鉴于

test<-"Low-Decarie, Etienne"

我希望用空格替换所有标点符号

gsub(pattern="[:punct:]", x=test, replacement=" ")

但这会产生

"Low-De arie, E ie  e"

其中没有替换标点符号,并且删除了明显随机的字母(尽管它们可能与标点符号相关联,标签为t,下一行为n)。

1 个答案:

答案 0 :(得分:21)

MontReal用户在这里。

有几个选项,结果相同。

在R Base中,只需加倍括号

gsub(pattern="[[:punct:]]", test, replacement=" ")

[1] "Low Decarie  Etienne"

stringr具有执行此功能的str_replace_all功能。

library(stringr)
str_replace_all(test, "[[:punct:]]", " ")

或只保留字母

str_replace_all(test, "[^[:alnum:]]", " ")