【问题标题】:How to extract a substring of certain length after matching pattern in R?如何在R中匹配模式后提取一定长度的子字符串?
【发布时间】:2020-01-02 23:48:24
【问题描述】:

我有一个字符串列表:string = c("PT11201320360429", "POSTEST1120122380820", "POST_TEST1120122380820")。我需要得到一个字符串向量,它只包含 PT11、POSTEST11 或 POST_TEST11 之后的四个数字(即 2013、2012 或 2012)。我怎样才能在 R 中做到这一点?谢谢!

【问题讨论】:

    标签: r substring


    【解决方案1】:

    我们可以使用sub 提取出现在PT11|POSTEST11|POST_TEST11 之一之后的4 位数字。

    sub("(PT11|POSTEST11|POST_TEST11)(\\d{4}).*", "\\2", string)
    #[1] "2013" "2012" "2012"
    

    【讨论】:

      【解决方案2】:

      由于 4 个数字出现在 11 之后,我们可以将其捕获为一个组,并在替换中使用捕获组的反向引用

      sub("^P.*11(....).*", "\\1", string)
      #[1] "2013" "2012" "2012"
      

      或者用

      让它更短
      sub("^\\D+11(.{4}).*", "\\1", string)
      #[1] "2013" "2012" "2012"
      

      数据

      string <- c("PT11201320360429", "POSTEST1120122380820", "POST_TEST1120122380820")
      

      【讨论】:

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