什么都不匹配怎么办

How to match nothing

这对某些人来说可能是一个简单的问题:如何在 R 中使用正则表达式实际匹配任何内容? 假设您有一个字符串向量,如下所示:

q <- c("a", "12", "0", "", "300")

并且假设您还想匹配空字符串 "",该怎么做? 似乎可以合理地很好地匹配 "" 使用 grep 来匹配元字符 . 意思是 'any character',或者作为否定字符 class 的内容,以及参数 invert = T 来匹配匹配项的反义词:

grep(".", q, value = T, invert = T)
[1] ""

grep("[^.]", q, value = T, invert = T)
[1] ""

无论哪种情况,匹配都有效。但是,可以肯定的是,使用 invert 感觉像是一个方便的技巧,而不是一个严肃的正则表达式。在 R 中是否有另一种不匹配的方法?

一个选项是指定 ^ 作为字符串的开头,然后 $ 作为字符串的结尾

grep("^$", q)

nchar

which(nchar(q) == 0)