【问题标题】:extracting a specific value from a string从字符串中提取特定值
【发布时间】:2021-03-30 01:25:34
【问题描述】:

假设我有一个字符串列表:

distance <- c("CHI #12 DEBRINCAT(1), Snap, Off. Zone, 18 ft.Assists: #88 KANE(2); #56 GUSTAFSSON(1)", "TOR ONGOAL - #44 RIELLY, Backhand, Off. Zone, 77 ft.")

现在我希望得到一个只包含部分的字符串向量 包含距离,即 substring = c ("18 ft", "77 ft")。

R 中有没有方便的方法来做到这一点?

【问题讨论】:

    标签: r regex string


    【解决方案1】:

    使用str_extract 匹配一个或多个数字后跟零个或多个空格 (\\s*) 和子字符串 'ft'

    library(stringr)
    str_extract(distance, "\\d+\\s*ft")
    #[1] "18 ft" "77 ft"
    

    【讨论】:

      【解决方案2】:

      替代方案:

      regmatches(distance, gregexpr("\\b[0-9]+\\s*ft", distance, perl = TRUE))
      # [[1]]
      # [1] "18 ft"
      # [[2]]
      # [1] "77 ft"
      
      strcapture("\\b([0-9]+\\s*ft)", distance, list(dist = ""))
      #    dist
      # 1 18 ft
      # 2 77 ft
      

      虽然他们都只是在做同样的事情,但界面略有不同。

      【讨论】:

        【解决方案3】:

        试试gsub

        > gsub(".*?(\\d+\\s+ft).*", "\\1", distance)
        [1] "18 ft" "77 ft"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-20
          • 2019-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-07
          • 1970-01-01
          相关资源
          最近更新 更多