【问题标题】:Regex replace everything after first digit including digit with another string正则表达式替换第一个数字后的所有内容,包括用另一个字符串的数字
【发布时间】:2021-02-13 12:26:26
【问题描述】:

我有一些具有这种模式的字符串:abc_def_10_cat_dog,我想使用 gsub 将 abc_def 之后的所有内容替换为 _diff。所以最后应该是abc_def_diff。我需要什么正则表达式来做到这一点?另一种思考方式可能是“如何保留第一个数字之前的所有值,然后添加 _diff?”我在 R 上使用 dplyr、gsub。

我知道 '^[^0-9]*' 保留了我想要的内容,但我不确定如何保留这些字符并在之后删除这些内容。我也尝试使用str_extract,但它一直说“找不到对象”。我的对象只是一个名称列表。

object <- df %>% select(vars(ends_with("10_cat_dog")) %>% names()

【问题讨论】:

    标签: r regex string replace gsub


    【解决方案1】:

    您可以匹配一个数字和任何字符,直到到达字符串的末尾,然后替换为diff

    library(stringr)
    str_replace("abc_def_10_cat_dog", "_\\d.*$", "_diff")
    #> [1] "abc_def_diff"
    

    reprex package (v0.3.0) 于 2020 年 10 月 30 日创建

    【讨论】:

      【解决方案2】:

      您可以使用基础 R sub

      x <- 'abc_def_10_cat_dog'
      
      sub('\\d+.*', 'diff', x)
      #[1] "abc_def_diff"
      

      【讨论】:

        【解决方案3】:

        sub 的另一个选项

        sub("[0-9]+.*", "diff", x)
        #[1] "abc_def_diff"
        

        数据

        x <- 'abc_def_10_cat_dog'
        

        【讨论】:

          猜你喜欢
          • 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
          相关资源
          最近更新 更多