提取括号内的字符“[”和“]”包括括号
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
如果您的字符串中有多个模式
我们可以使用 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"
我有这样一个字符串:
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
如果您的字符串中有多个模式
我们可以使用 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"