【问题标题】:Find brackets using grep [closed]使用 grep 查找括号 [关闭]
【发布时间】:2016-07-16 02:20:35
【问题描述】:

有没有一种简单的方法可以在一行代码中对两个括号进行 grep。我想在一行代码中包含打开 [ 和关闭 ] 括号。我已经尝试了各种组合,但似乎一次只有一种是可能的。我有以下内容:

if(grepl("\\[+",CAS)) return(FALSE)

【问题讨论】:

  • grepl("[\\[\\]]", CAS, perl=T)

标签: r regex metacharacters


【解决方案1】:

如果字符类中的第一件事(在 [] 内)是方括号(任何一个),那么它会按字面意思解释,而不是作为字符类的一部分。这意味着您可以使用[[] 匹配一个左方括号,使用[]] 匹配右方括号。您甚至可以在括号后添加内容(但如果您想同时匹配两者,那么最好使用[][]

一些例子:

> 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

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多