首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中使用正则表达式从字符串中提取文本?

如何在R中使用正则表达式从字符串中提取文本?
EN

Stack Overflow用户
提问于 2019-04-16 01:17:08
回答 2查看 58关注 0票数 1

我有一个字符串向量,如下所示:

代码语言:javascript
运行
复制
x <- c("gene_biotype \"protein_coding\"; transcript_name \"IGHV3-66-201\"; 
transcript_source \"havana\"; transcript_biotype \"IG_V_gene\"; 
protein_id \"ENSP00000375041\"; protein_version \"2\"; tag 
\"cds_end_NF\"; tag \"mRNA_end_NF\"; tag \"basic\"; 
transcript_support_level \"NA\";",
"gene_id \"ENSG00000211973\"; gene_version \"2\"; transcript_id 
\"ENST00000390633\"; transcript_version \"2\"; exon_number \"1\"; 
gene_name \"IGHV1-69\"; gene_source \"ensembl_havana\"; gene_biotype 
\"IG_V_gene\"; transcript_name \"IGHV1-69-201\"; transcript_source 
\"ensembl_havana\"; transcript_biotype \"IG_V_gene\"; protein_id 
\"ENSP00000375042\"; protein_version \"2\"; tag \"cds_end_NF\"; tag 
\"mRNA_end_NF\"; tag \"basic\"; transcript_support_level \"NA\";",
"gene_id \"ENSG00000211973\"; gene_version \"2\"; transcript_id 
\"ENST00000390633\"; transcript_version \"2\"; exon_number \"2\"; 
gene_name \"IGHV1-69\"; gene_source \"ensembl_havana\"; gene_biotype 
\"protein_coding\";")

我需要提取gene_biotype后面的引号文本(任何字符)。例如:

代码语言:javascript
运行
复制
[1] protein_coding\ 
[2] IG_V_gene\
[3] protein_coding\

我已经尝试在stringr包中使用str_extract,但是我无法使正则表达式工作。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-16 01:25:41

您可以在stringr包的帮助下使用正则表达式来获取所需的数据。例如

代码语言:javascript
运行
复制
library(stringr)
str_match(x, "gene_biotype\\s+\"([^\"]+)\"")
#      [,1]                                [,2]            
# [1,] "gene_biotype \"protein_coding\""   "protein_coding"
# [2,] "gene_biotype \n\"IG_V_gene\""      "IG_V_gene"     
# [3,] "gene_biotype \n\"protein_coding\"" "protein_coding"

这将返回一个包含匹配和类别的矩阵。如果你只是想要这个类别,你可以做

代码语言:javascript
运行
复制
str_match(x, "gene_biotype\\s+\"([^\"]+)\"")[,2]
# [1] "protein_coding" "IG_V_gene"      "protein_coding"
票数 4
EN

Stack Overflow用户

发布于 2019-04-16 01:31:32

我找到了这个here

代码语言:javascript
运行
复制
stringi::stri_extract_all_regex(x, '(?<=").*?(?=")')[[1]][1]
#[1] "protein_coding"
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55694298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档