使用gsub在r中进行字符串过滤

使用gsub在r中进行字符串过滤,r,string,gsub,R,String,Gsub,以向量为例 v<- 'I l@ove d**^%ata 33-99//""(Sci"ence==+)' 任何帮助都将不胜感激。我们匹配一个或多个非字母或空格的字符,并将其替换为'。[[:alpha:][]+本身匹配一个或多个字母字符。但是,假设我们需要做与之相反的事情,即匹配一个或多个非字母的字符,使用[^[:alpha:]+,即在第一个[中使用^否定匹配。这里我们还需要空格。没有空格,我们得到“IlovedataScience”。因此,在匹配中也使用它,即[^[:alpha:]]+

以向量为例

v<-  'I l@ove d**^%ata 33-99//""(Sci"ence==+)'

任何帮助都将不胜感激。

我们匹配一个或多个非字母或空格的字符,并将其替换为
'
[[:alpha:][]+
本身匹配一个或多个字母字符。但是,假设我们需要做与之相反的事情,即匹配一个或多个非字母的字符,使用
[^[:alpha:]+
,即在第一个
[
中使用
^
否定匹配。这里我们还需要空格。没有空格,我们得到
“IlovedataScience”
。因此,在匹配中也使用它,即
[^[:alpha:]]+

gsub("[^[:alpha:] ]+", "", v1)
#[1] "I love data Science"
或者使用
[[:punct:]
匹配任何标点符号并替换为
'

或者,我们可以将字母表指定为
[A-Za-z]
(如@alistaire评论的那样),而不是
[[:alpha:]

更新 如果OP希望每个单词的起始字母都是大写

gsub("\\b(.)", "\\U\\1", gsub('[^A-Za-z ]', '', v1), perl=TRUE)
#[1] "I Love Data Science"
数据
v1我们匹配一个或多个非字母表或空格的字符,并将其替换为
'
[[:alpha:]+
本身匹配一个或多个字母表字符。但是,假设我们需要做相反的操作,即匹配一个或多个非字母表字符,请使用
[^[:alpha:]]+
,即第一个
[
内的
^
否定匹配。这里我们还需要空格。没有空格,我们会得到
“IlovedataScience”
。因此,在匹配中也使用它,即
[^[:alpha:]+

gsub("[^[:alpha:] ]+", "", v1)
#[1] "I love data Science"
或者使用
[[:punct:]
匹配任何标点符号并替换为
'

或者,我们可以将字母表指定为
[A-Za-z]
(如@alistaire评论的那样),而不是
[[:alpha:]

更新 如果OP希望每个单词的起始字母都是大写

gsub("\\b(.)", "\\U\\1", gsub('[^A-Za-z ]', '', v1), perl=TRUE)
#[1] "I Love Data Science"
数据
v1这里有一个选项,它只显式替换出现在输入向量中的特殊字符:

chars <- c("@", "*", "^", "%", "/", "\"", "=", "+", "d", "(", ")", "-")
gsub(paste("\\", chars, sep="", collapse="|"), "", statement)
[1] "I love data Science"

chars这里有一个选项,它只显式替换出现在输入向量中的特殊字符:

chars <- c("@", "*", "^", "%", "/", "\"", "=", "+", "d", "(", ")", "-")
gsub(paste("\\", chars, sep="", collapse="|"), "", statement)
[1] "I love data Science"

chars是我要发布的一个等价物:
gsub(“[^A-Za-z]”,v1)
这是一个总括性解决方案,可能对OP有效,但如果需求发生变化,则很容易中断。@TimBiegeleisen我收回您更改解决方案时的评论。@MilanAmrutJoshi当然,我会添加更多内容description@RHertel谢谢,我没有注意到。更正了。我要发布的一个等价物:
gsub(“[^A-Za-z]”,v1)
这是一个总括性解决方案,可能对OP有效,但如果需求发生变化,则很容易中断。@TimBiegeleisen我收回您更改解决方案时的评论。@MilanAmrutJoshi当然,我会添加更多内容description@RHertel谢谢,我没注意到。更正了。
chars <- c("@", "*", "^", "%", "/", "\"", "=", "+", "d", "(", ")", "-")
gsub(paste("\\", chars, sep="", collapse="|"), "", statement)
[1] "I love data Science"