是否有一种简单的方法可以在一行代码中grep两个括号。我想在一行代码中包括打开[
和关闭]
括号。我尝试了各种组合,但似乎每次只有一个组合是可能的。我有以下内容:
if(grepl("\\[+",CAS)) return(FALSE)
答案 0 :(得分:3)
如果字符类(inside [])中的第一个东西是方括号(任一个),那么它将按字面解释,而不是作为字符类的一部分。这意味着您可以使用[[]
匹配单个左方括号和[]]
以匹配结束方括号。您甚至可以在括号后添加内容(但如果要匹配两者,则最好使用[][]
。
一些例子:
> tmp <- c('hello','[',']','[]', '[a-z]')
> grep( '[[]', tmp)
[1] 2 4 5
> grep( '[]]', tmp)
[1] 3 4 5
> grep( '[[].*[]]', tmp)
[1] 4 5
> grep( '[[]az-]', tmp)
integer(0)
> grep( '[[]]', tmp)
[1] 4
> grep( '[][]', tmp)
[1] 2 3 4 5
> grep( '[][az-]', tmp)
[1] 2 3 4 5
> regexpr( '[][az-]*', tmp)
[1] 1 1 1 1 1
attr(,"match.length")
[1] 0 1 1 2 5
attr(,"useBytes")
[1] TRUE