【问题标题】:remove information using gsub使用 gsub 删除信息
【发布时间】:2023-02-26 02:51:36
【问题描述】:

我正在尝试从此行中删除直到最后/(年份)的所有信息。

“'CSF0495/DE/wb/199​​7'”

我运行的代码经过但没有删除任何信息。

这是我运行的代码

date <- gsub("^[[:alnum:]]{1,}////", "",temp)

它会通过,但不会删除任何信息。我不确定我错过了什么。

【问题讨论】:

  • 您的模式中有 "////",但字符串中从未出现过。我猜你在想反斜杠,它需要转义:但正斜杠不需要,所以它正在寻找四个斜杠的文字序列。

标签: r


【解决方案1】:

使用sub

sub(".*/", "", "CSF0495/DE/wb/1997")
[1] "1997"

basename

basename("CSF0495/DE/wb/1997")
[1] "1997"

【讨论】:

    【解决方案2】:

    为什么不简单地提取年份,知道它由多个 digits 组成,一直延伸到字符串中的最终位置 ($)?

    library(stringr)
    str_extract("CSF0495/DE/wb/1997", "\d+$")
    [1] "1997"
    

    【讨论】:

    • 我最初也是这样想的。但我认为操作员想要删除“1997”
    【解决方案3】:

    其中之一:

    1997

    .* 匹配任何字符

    .零次或多次

    *直到最后一个正斜杠/

    date <- gsub(".*/", "", "CSF0495/DE/wb/1997")
    date
    
    [1] "1997"
    

    删除1997

    \d{4} 匹配任意四位数字

    $符号匹配字符串结尾

    temp <- "CSF0495/DE/wb/1997"
    date <- gsub("/\d{4}$", "", temp)
    
    [1] "CSF0495/DE/wb"
    

    【讨论】:

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