如何识别那些没有英文字母,数字和" _"并替换其余的?

时间:2017-05-30 22:53:32

标签: r regex

我有以下数据

_

我希望排除那些不是英文字母的数据,并用" ABC"等替换它们。所以理想输出

-

我使用了以下代码,但无法识别_-。如何在正则表达式中澄清s[!grepl('^[A-Za-z0-9_]+$', s)] <- 'ABC' ABC" "Cat" "Blue" "ABC" "ABC"

s = "-235"
isPositive = float(s) > 0

这给了我:

{{1}}

3 个答案:

答案 0 :(得分:3)

为了便于阅读,我建议使用[:alnum:]来捕获字母数字字符,然后是要保留的显式非字母数字字符(例如“_-”),如下所示:

s <- c("コハニー", "Cat", "Blue", "زبان","D-1")
s[!grepl('^[[:alnum:]_-]+$', s)] <- ''
s

答案 1 :(得分:2)

您可以直接在角色类中添加_-(无需转义)。连字符-如果是类中的第一个或最后一个字符,则不需要进行转义,即

[A-Za-z0-9_-]

所以你可以试试这个:

s[!grepl('^[A-Za-z0-9_-]+$', s)] <- 'ABC'

看看这个R Demo

答案 2 :(得分:1)

您最后需要添加-_,因此应该'^[A-Za-z0-9_-]+$

我总是发现regexr.com非常有助于测试这些问题并了解有关正则表达式的更多信息。

s <- c("????", "Cat", "Blue", "????","D-1")

s[!grepl('^[A-Za-z0-9\\_\\-]+$', s)] <- 'ABC'

s
#> [1] "ABC"  "Cat"  "Blue" "ABC"  "D-1"