【问题标题】:Extract only characters after a space that comes after the last number in a string仅提取字符串中最后一个数字之后的空格后的字符
【发布时间】:2021-10-14 10:11:23
【问题描述】:

我不太擅长使用正则表达式。我有一个字符串向量。我想在最后一个数字后面的空格之后提取所有内容。我检查了各种其他 SO 帖子,但我尝试过的所有内容都会破坏字符串。

我尝试过直接提取我想要的文本以及提取我不想要的文本。这两方面我都失败了。

这是一个样本向量:

c("54 ABC, efg xyz", "ABC 08 abcdef ghijkl", "ABC 01-02 ghijkl")

这是所需的输出

c("ABC, efg xyz", "abcdef ghijkl", "ghijkl")

这是我尝试过的:

library(dplyr)
library(stringr)

c("54 ABC, efg xyz", "ABC 08 abcdef ghijkl", "ABC 01-02 ghijkl") %>% 
  str_replace("[^[:digit:]] +", "")
[1] "54 ABCefg xyz"      "AB08 abcdef ghijkl" "AB01-02 ghijkl"

我试着把它分成几个步骤:

c("54 ABC, efg xyz", "ABC 08 abcdef ghijkl", "ABC 01-02 ghijkl") %>% 
    str_replace_all("^[:digit:]+\\s", "") %>% 
    str_replace_all("ABC ", "") %>% 
    str_replace_all("^[:digit:]+\\s", "") %>% 
    str_replace_all(".*? ", "")
[1] "xyz"    "ghijkl" "ghijkl"

还有其他一些尝试,但不值得发布。

我确信在我花了几个小时无处可去之后,有人能够轻松解决这个问题。

【问题讨论】:

    标签: r regex


    【解决方案1】:

    我们可以使用sub 来执行此操作,即匹配字符 (.*) 直到一个或多个数字 (\\d+) 后跟一个或多个空格 (\\s+) 并替换为空白 (@ 987654325@)

    sub(".*\\d+\\s+", "", v1)
    

    -输出

    [1] "ABC, efg xyz"  "abcdef ghijkl" "ghijkl"   
    

    或使用str_remove

    library(stringr)
    str_remove(v1, ".*\\d+\\s+")
    [1] "ABC, efg xyz"  "abcdef ghijkl" "ghijkl"  
    

    数据

    v1 <- c("54 ABC, efg xyz", "ABC 08 abcdef ghijkl", "ABC 01-02 ghijkl")
    

    【讨论】:

    • 谢谢阿克伦。作品。现在看起来很明显。
    • 亲爱的 Arun,你知道为什么 gsub(".*(?&lt;=\\s)([^0-9]+)", "\\1", vec) 不起作用吗?
    • @AnoushiravanR 默认情况下,perl = FALSEgsub 中,将其更改为perl = TRUE,因为它们是正则表达式环视,而在stringr 中,默认情况下为 TRUE
    • @AnoushiravanR 在修饰符中,正则表达式 The default. Uses ICU regular expressions. 在 stringr 中提到
    【解决方案2】:

    我认为您也可以使用以下解决方案:

    library(stringr)
    
    str_extract(vec, "(?<=\\s)([^0-9]+)")
    
    [1] "ABC, efg xyz"  "abcdef ghijkl" "ghijkl" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多