r - 提取第三组括号之间的字符串

标签 r regex string

我希望提取第三组括号之间的 string 部分,最好使用基 R。这是一个示例数据集:

my.data <- read.table(text = '
     my.num                              my.string                                  my.cov
        1    Abc(~1)Fgf(~-1+e2:cp)Bca(~-1+g1+g2:ti+g2:cfi+g2:pp+g2:cp)q(~-1+re:se)    10
        2    Abc(~1)Fgf(~-1+e1:e2:fi)Bca(~-1+g1+g2:ti+g2:pr+g2:ts+g2:cfi)q(~1)        20
        3    Abc(~1)Fgf(~1)Bca(~-1+g1+g2+g2:cp)q(~-1+re:se)                           15
', header = TRUE, stringsAsFactors = FALSE)
my.data

这两个结果中的任何一个都会有帮助:

desired.result1 <- read.table(text = '
     my.num                     my.string            my.cov
        1    Bca(~-1+g1+g2:ti+g2:cfi+g2:pp+g2:cp)      10
        2    Bca(~-1+g1+g2:ti+g2:pr+g2:ts+g2:cfi)      20
        3    Bca(~-1+g1+g2+g2:cp)                      15
', header = TRUE, stringsAsFactors = FALSE)
desired.result1

desired.result2 <- read.table(text = '
     my.num                     my.string       my.cov
        1    ~-1+g1+g2:ti+g2:cfi+g2:pp+g2:cp      10
        2    ~-1+g1+g2:ti+g2:pr+g2:ts+g2:cfi      20
        3    ~-1+g1+g2+g2:cp                      15
', header = TRUE, stringsAsFactors = FALSE)
desired.result2

我对 regex 很生疏,我什至不知道从哪里开始,也无法在互联网上找到类似的问题。感谢您提供任何建议或帮助。

最佳答案

使用strsplit:

sapply(strsplit(my.data$my.string, split = "(", fixed = TRUE), function(i){
  strsplit(i[4], split = ")", fixed = TRUE)[[1]][1]})

# [1] "~-1+g1+g2:ti+g2:cfi+g2:pp+g2:cp" "~-1+g1+g2:ti+g2:pr+g2:ts+g2:cfi" "~-1+g1+g2+g2:cp" 

关于r - 提取第三组括号之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42354232/

相关文章:

r - ggplot2:使用gtable将标签条移动到facet_grid的面板顶部

r - 计算仅与R中的自然数的差异

Python 正则表达式 : Search and replace a character except when outside braces

javascript - 用 X 替换内部信用卡号的正则表达式?

java - 如何在单词之间拆分具有不同字符的字符串?

c++ - 如何解决UndefinedBehaviorSanitizer错误?

r - R 中的数据框不重复类别

r - 计算R中每组连续连续值的长度

regex - 使用 unix sed 替换 js 路径

Java如何从randomaccessfile中读取字符串?