我有一个像这样的字符串:
GATATATGGCACAGCAGTTGGATCCTTGAATGTCC[A/C]AGGTATATGTTATAGAAGCCTCGCAATTGTGTGTT
我意识到我可以在这种特殊情况下使用替代。但是,[X/Y]
的位置在字符串之间有所不同,括号之间的内容长度不同。
我想提取[X/Y]
。
答案 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
<强> GSUB 强>
gsub("^[^[]+|[^]]+$", '', dat)
#[1] "[A/C]"
<强> strsplit 强>
strsplit(dat, "[^[]+(?=\\[)|(?<=])[^]]+", perl=TRUE)[[1]][2]
#[1] "[A/C]"
dat <- "GATATATGGCACAGCAGTTGGATCCTTGAATGTCC[A/C]AGGTATATGTTATAGAAGCCTCGCAATTGTGTGTT"
答案 2 :(得分:2)
如果每个字符串只有一对“[]”,请使用grepexpr:
dat<-c("GATATATGGCACAGCAGTTGGATCCTTGAATGTCC[A/C]AGGTATATGTTATAGAAGCCTCGCAATTGTGTGTT")
substring(dat, gregexpr("\\[", dat), gregexpr("\\]", dat))