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

时间:2016-05-10 08:33:27

标签: regex r split bioinformatics

我有一个像这样的字符串:

GATATATGGCACAGCAGTTGGATCCTTGAATGTCC[A/C]AGGTATATGTTATAGAAGCCTCGCAATTGTGTGTT

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

我想提取[X/Y]

3 个答案:

答案 0 :(得分:5)

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

library(stringr)
str_extract(x, '\\[.*\\]')
#[1] "[A/C]"
如果您的字符串中有多个模式,则

str_extract_all

答案 1 :(得分:4)

我们可以使用bracketXtract

中的qdap
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]"
    
  3. 数据

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

答案 2 :(得分:2)

如果每个字符串只有一对“[]”,请使用grepexpr:

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