提取括号内的字符“[”和“]”包括括号

Extract characters within brackets "[" and "]" including brackets

我有这样一个字符串:

GATATATGGCACAGCAGTTGGATCCTTGAATGTCC[A/C]AGGTATATGTTATAGAAGCCTCGCAATTGTGTGTT

我意识到我可以在这个特殊情况下使用替代。但是,[X/Y]的位置因字符串而异,括号内的内容长度也不同。

我想提取[X/Y]

假设每个字符串只有一对“[]”,使用grepexpr:

dat<-c("GATATATGGCACAGCAGTTGGATCCTTGAATGTCC[A/C]AGGTATATGTTATAGAAGCCTCGCAATTGTGTGTT")
substring(dat, gregexpr("\[", dat), gregexpr("\]", dat))

stringr 对这些类型的操作很有用,

library(stringr)
str_extract(x, '\[.*\]')
#[1] "[A/C]"

str_extract_all如果您的字符串中有多个模式

我们可以使用 bracketXtractqdap

library(qdap)
unname(bracketXtract(dat, "square", with = TRUE))
#[1] "[A/C]"

或使用 base R

  1. gsub

    gsub("^[^[]+|[^]]+$", '', dat)
    #[1] "[A/C]"
    
  2. strsplit

    strsplit(dat, "[^[]+(?=\[)|(?<=])[^]]+", perl=TRUE)[[1]][2]
    #[1] "[A/C]"
    

数据

dat <- "GATATATGGCACAGCAGTTGGATCCTTGAATGTCC[A/C]AGGTATATGTTATAGAAGCCTCGCAATTGTGTGTT"