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])
“谢谢你的详细解释,这很有帮助。谢谢你的详细解释,这很有帮助。