从一列中提取特定字符串模式

时间:2016-04-05 14:06:24

标签: r regex string

我想从R中的一列提取具有模式gene=something的特定字符串。

输入的一个例子:

df <- 'V1 
       ID=gene92;DbX;gene=BH1;genePro
       ID=gene91;DbY;gene=BH2;genePro;inf2
       ID=gene90;DbY;gene=BH3;genePro;inf2'
df <- read.table(text=df, header=T)

预期输出的例子:

dfout <- 'V1 
         gene=BH1
         gene=BH2
         gene=BH3'
    dfout <- read.table(text=dfout, header=T)

要实现这个目标吗?

2 个答案:

答案 0 :(得分:4)

library(stringr)
str_extract(df$V1, 'gene=BH[0-9]+')
#[1] "gene=BH1" "gene=BH2" "gene=BH3"

答案 1 :(得分:1)

您也可以使用

gsub(".*(gene=.*?)(;|$).*", "\\1", df$V1)
# [1] "gene=BH1" "gene=BH2" "gene=BH3"

因此,我们只匹配任何内容gene=....*,后跟;或字符串结尾;|$