【问题标题】:Maintaining order of extracted patterns from strings in R维护从R中的字符串中提取模式的顺序
【发布时间】:2019-03-14 23:07:08
【问题描述】:

我正在尝试从字符串中提取模式,但难以维持顺序。考虑:

library(stringr)
string <- "A A A A C A B A"
extract <- c("B","C")
str_extract_all(string,extract)

[[1]]
[1] "B"

[[2]]
[1] "C"

this 的输出是一个列表;是否可以返回一个保持原始顺序的向量,即字符串中的"C"precedes "B"?我尝试了gsub 的许多选项,但没有运气。谢谢。

【问题讨论】:

  • str_extract_all(string,paste0("\\b(?:", paste(extract, collapse="|"), ")\\b")

标签: r regex


【解决方案1】:

尝试使用以下正则表达式:

str_extract_all(string,"[BC]")
## [[1]]
## [1] "C" "B"

或更笼统地说:

str_extract_all(string, paste(extract, collapse = "|"))

【讨论】:

    【解决方案2】:
    string <- "A A A A C A B A B"
    extract <- c("B","C")
    
    inds = unlist(sapply(extract, function(p){
        as.numeric(gregexpr(p, string)[[1]])
    }))
    sort(inds[inds > 0])
    # C B1 B2 
    # 9 13 17 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 2020-11-02
      • 2022-12-18
      • 1970-01-01
      相关资源
      最近更新 更多