我有以下数据
_
我希望排除那些不是英文字母的数据,并用" ABC"等替换它们。所以理想输出是
-
我使用了以下代码,但无法识别_
和-
。如何在正则表达式中澄清s[!grepl('^[A-Za-z0-9_]+$', s)] <- 'ABC'
和ABC" "Cat" "Blue" "ABC" "ABC"
?
s = "-235"
isPositive = float(s) > 0
这给了我:
{{1}}
答案 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"