正则表达式只拒绝非字母数字字符

时间:2016-06-02 13:57:56

标签: regex r

如果要检查的关键字是其他。它不应该在字母数字字符之前或之后。

允许使用空格,\ n允许,允许使用特殊字符。

不允许 - " AOther9"," noTHERX"

允许 - "其他"," \ nother" ,"其他"," $ other /"

grepl(paste("[^a-zA-Z0-9]","other","[^a-zA-Z0-9]",sep=""),String1 , ignore.case = TRUE)

上述正则表达式适用于除“check”之外的所有情况 - 当检查之前和之后都没有。

2 个答案:

答案 0 :(得分:3)

您需要使用具有外观的PCRE正则表达式:

grepl(paste("(?<![a-zA-Z0-9])","other","(?![a-zA-Z0-9])",sep=""), String1, ignore.case = TRUE, perl=TRUE)
             ^^^^           ^           ^^^           ^                                        ^^^^^^^^^

负面外观不会消耗非字母数字字符,它们不要求这些字符实际存在于字符串中。

您可以阅读more about lookarounds here

答案 1 :(得分:1)

在倒置范围中添加*量词,然后开始^并结束$行锚点:

String1 <- c("AOther9", "noTHERX", "other", "\nother", " other ", "$other/")

grep('^[^a-z0-9]*other[^a-z0-9]*$', String1, ignore.case = TRUE, value = TRUE)
# [1] "other"   "\nother" " other " "$other/"