我希望能够测试一个字符串:
所以我们说我们有:
x <- c(" ", " p", "\\s\\s", "\\s", " ", "d", " ", " ", ": ")
我希望结果如下:
TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE
我开始使用以下内容:
log_test <- gregexpr(":", gsub("\\s", ":", x))
然后意识到这变得令人费解,(减去空间)导致容易出错的反应。例如,如果我沿着这条路走下去,那么最后一个元素将成为TRUE
,即使它只有一个空格,因为它已经包含一个冒号。
请注意R具有特定的正则表达式规则,要正确回答这一点,很可能需要了解R语言。
答案 0 :(得分:5)
另一种选择:
grepl('^( |\\\\s){2,}$', x)
#[1] TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE
答案 1 :(得分:2)
试一试?
> x2 <- gsub('\\\\s',' ',x)
> grepl('[[:blank:]]{2,}',x2) & !grepl('[[:alnum:][:punct:]]',x2)
[1] TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE
您还可以使用[:graph:]
来捕获字符和标点符号:
> x2 <- gsub('\\\\s',' ',x)
> grepl('[[:blank:]]{2,}',x2) & !grepl('[[:graph:]]',x2)
[1] TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE