R语言中提取FASTA字符串指定模式后子串的方法求助
解决R语言提取FASTA标题中指定内容的问题
方法1:用stringr::str_remove()移除固定前缀
针对你给出的FASTA标题格式,开头的前缀是gi|可变内容|gb|可变内容| 的固定模式,直接用正则匹配这个前缀并移除即可:
library(stringr) strings <- c("gi|0|gb|MK004980| Bat astrovirus isolate DXRA19 RNA-dependent RNA polymerase gene, partial cds. [DXRA19 (BVI10455)]", "gi|225381010|gb|FJ571114| Bat astrovirus Tm/Guangxi/LD61/2007 RNA-dependent RNA polymerase (pol) gene, partial cds. [Tm/Guangxi/LD61/2007 (BVI03388)]") # 移除前缀,得到目标内容 strings_final <- str_remove(strings, "^gi\\|[^|]+\\|gb\\|[^|]+\\| ")
正则表达式解释:
^:限定匹配字符串的开头gi\\|:匹配固定的gi|(|是正则特殊字符,必须用\\转义)[^|]+:匹配任意数量的非|字符(对应中间的可变部分)\\|gb\\|:匹配固定的|gb|[^|]+:再次匹配可变的非|字符\\|:匹配最后的|(注意后面有个空格,确保只去掉前缀部分)
方法2:用stringr::str_extract()直接提取目标内容
如果你更倾向于用str_extract,可以用正向预查来匹配前缀之后的所有内容:
strings_final <- str_extract(strings, "(?<=^gi\\|[^|]+\\|gb\\|[^|]+\\| ).*")
正则解释:
(?<=...):正向预查,仅当前面是指定的前缀时,才匹配后面的内容.*:匹配前缀之后的所有字符(直到字符串结尾)
额外小技巧:标准FASTA标题的专业处理
如果你的FASTA文件是NCBI标准格式,也可以用Biostrings包的工具直接解析,不需要自己写正则:
library(Biostrings) # 实际使用时用readDNAStringSet()读取FASTA文件,这里用示例字符串模拟 dna_set <- DNAStringSet(strings) # 提取标题中的描述部分(即你需要的内容) strings_final <- str_split_fixed(names(dna_set), " ", 2)[, 2]
内容的提问来源于stack exchange,提问作者netmarson
相关产品推荐
相关产品推荐

