R 删除带有特殊字符的字段

R 删除带有特殊字符的字段,r,regex,grepl,R,Regex,Grepl,我正在尝试删除文本中包含特殊字符(@?*等)的所有字段 我想我应该使用 Filter(function(x) {grepl('|[^[:punct:]]).*?', x)} == FALSE, data$V1) 其中data$V1包含我的数据。然而,似乎 grepl('|[^[:punct:]]).*?', x) 在一些琐碎的例子中失败,比如 grepl('|[^[:punct:]]).*?', 'M') 它输出TRUE,即使M没有特殊字符。我应该如何使用grepl从数据列中删除带有特殊字

我正在尝试删除文本中包含特殊字符(
@?*
等)的所有字段

我想我应该使用

Filter(function(x) {grepl('|[^[:punct:]]).*?', x)} == FALSE, data$V1)
其中
data$V1
包含我的数据。然而,似乎

grepl('|[^[:punct:]]).*?', x)
在一些琐碎的例子中失败,比如

grepl('|[^[:punct:]]).*?', 'M')

它输出
TRUE
,即使
M
没有特殊字符。我应该如何使用
grepl
从数据列中删除带有特殊字符的字段?

使用
|
启动正则表达式会使它毫无用处,因为它将匹配任何内容

请参见此JS示例:

console.log('With the start pipe=>'+/|([\W]).*?/.test('M');

console.log('不带起始管道=>'+/([\W]).*?/.test('M')使用
|
启动正则表达式会使它毫无用处,因为它将匹配任何内容

请参见此JS示例:

console.log('With the start pipe=>'+/|([\W]).*?/.test('M');
console.log('不带起始管道=>'+/([\W]).*?/.test('M')要搜索“特殊字符”,可以搜索字母数字字符的反义,如下所示:

grepl('[^[:alnum:]_]+', c('m','m@','M9*')) 
# [1] FALSE  TRUE  TRUE
或者使用符号
\W

grepl('\\W+', c('m','m@','M9*')) 
# [1] FALSE  TRUE  TRUE
\W
的解释如下:

符号\w与一个“word”字符(扩展名
[:alnum:][uu8]
的同义词)匹配,\w是它的反义(
[^[:alnum:][u768;

要搜索“特殊字符”,您可以搜索字母数字字符的否定,例如:

grepl('[^[:alnum:]_]+', c('m','m@','M9*')) 
# [1] FALSE  TRUE  TRUE
或者使用符号
\W

grepl('\\W+', c('m','m@','M9*')) 
# [1] FALSE  TRUE  TRUE
\W
的解释如下:

符号\w与一个“word”字符(扩展名
[:alnum:][uu8]
的同义词)匹配,\w是它的反义(
[^[:alnum:][u768;


只需将它们放在
[…]
中,并将其提供给
grepl
的模式参数,然后求反

data$V1[!grepl("[@?.*]", data$V1)]
比如说,

> x <- c("M", "3@3", "8.*x")
> x[!grepl("[@?.*]", x)]
[1] "M"
>x[!grepl([@?*],x)]
[1] “M”

只需将它们放在
[…]
中,并将其提供给模式参数
grepl
,然后求反

data$V1[!grepl("[@?.*]", data$V1)]
比如说,

> x <- c("M", "3@3", "8.*x")
> x[!grepl("[@?.*]", x)]
[1] "M"
>x[!grepl([@?*],x)]
[1] “M”

删除起始的
grepl('[^[:alnum:][u]+',c('m','m@','M9*)
grepl('\\W+',c('m','m@','M9*)
,如正则表达式帮助中所示:“符号
\W
匹配一个“word”字符(一个扩展名为
[[:alnum:][/code>,'M9*),扩展名的同义词),而
就是它的否定([^[:alnum:][uU9])
删除起始的
grepl(“[^[:alnum:][uU9+”,c('m','m@','M9*))
grepl('\\W+',c('m','m@','M9*)
,如正则表达式帮助中所示:“符号
\W
匹配一个“单词”字符(一个
[:alnum的同义词,一个扩展名)。”而
\W
是它的否定
([^[:alnum:][uu])
“谢谢你的详细解释,这很有帮助。谢谢你的详细解释,这很有帮助。