从R中的字符串中删除特殊字符

时间:2017-10-08 11:28:08

标签: r regex gsub

我正在尝试使用R中的正则表达式清理字符串。我想删除任何非AlphaNumeric或标点符号的内容。

我正在使用gsub并且一直在使用

gsub("[^[:alnum:]]", " ", x)

但这会删除标点符号。有没有办法添加“[[:punct:]]”并将两者结合起来。

由于

2 个答案:

答案 0 :(得分:1)

我认为stringr和rebus是构建正则表达式的非常方便的包

> library(stringr)
> library(rebus)
> # string
> x <- "1 !@#!!@$!@#!@#!@#! 11 ;'. R Tutorial"
> 
> # define the pattern
> pat<-or(WRD,char_class(",;._-"))
> # the regex of the pattern
> pat
<regex> (?:\w|[,;._-])
> # split the string into single character
> x1<-unlist(str_split(x,""))
> # subset the character based on the pattern and collapse them
> str_c(str_subset(x1,pat),collapse = "")
[1] "111;.RTutorial"

如果你想使用[:punct:] regex

> # define the pattern using puntc
> pat2<-or(WRD,PUNCT)
> # the regex of the pattern
> pat2
<regex> (?:\w|[:punct:])
> # subset the character based on the pattern and collapse them
> str_c(str_subset(x1,pat2),collapse = "")
[1] "1!@#!!@!@#!@#!@#!11;'.RTutorial"

答案 1 :(得分:0)

您可以尝试此操作(run here):

x <- "1 !@#!!@$!@#!@#!@#! 11 ;'. R Tutorial"
gsub("[^A-Za-z0-9,;._-]","",x)

根据您的需要添加其他标点符号