【问题标题】:Detecting sequencing using regexes使用正则表达式检测序列
【发布时间】:2015-09-21 13:35:05
【问题描述】:

假设我在这样的列表中有多个字符串:

[[1]]
 [1] "1-FA-1-I2-1-I2-1-I2-1-EX-1-I2-1-I3-1-FA-1-" 
 [2] "-1-I2-1-TR-1-"                              
 [3] "-1-I2-1-FA-1-I3-1-"                         
 [4] "-1-FA-1-FA-1-NR-1-I3-1-I2-1-TR-1-"          
 [5] "-1-I2-1-"                                   
 [6] "-1-I2-1-FA-1-I2-1-"                         
 [7] "-1-I3-1-FA-1-QU-1-"                         
 [8] "-1-I2-1-I2-1-I2-1-NR-1-I2-1-I2-1-NR-1-"     
 [9] "-1-I2-1-"                                   
[10] "-1-NR-1-I3-1-QU-1-I2-1-I3-1-QU-1-NR-1-I2-1-"
[11] "-1-NR-1-QU-1-QU-1-I2-1-"

我想使用正则表达式来检测特定字符串,其中某个子字符串在另一个子字符串之前,但不一定直接在另一个子字符串之前

例如,假设我们要在 EX 之前查找 FA。这需要匹配列表中的1。即使FA 在它自己和EX 之间有-1-I2-1-I2-1-I2-1-FA 仍然出现在EX 之前,因此需要匹配。

如何定义一个通用的正则表达式来标识某些子字符串以这种方式出现在另一个子字符串之前的字符串?

【问题讨论】:

    标签: regex r string sequence-analysis


    【解决方案1】:

    你可以使用 grep。

    x <- c("1-FA-1-I2-1-I2-1-I2-1-EX-1-I2-1-I3-1-FA-1-" ,"-1-I2-1-TR-1-")
    grepl("FA.*EX", x)
    #[1]  TRUE FALSE
    grep("FA.*EX", x)
    #[1] 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多