【问题标题】:How to match a substring at the end of a string in R?如何匹配R中字符串末尾的子字符串?
【发布时间】:2017-06-17 01:40:29
【问题描述】:

我正在使用 grepl 来检测字符串是否包含子字符串。例如:

grepl("-B4","P6-B4")

显然返回 True。现在我想避免在“-B4”子字符串之后有字符的情况。例如我想从下面看到 False:

grepl("-B4","P6-B41A")

如您所见,我想避免它的原因是因为 4 与 41 不同,我不想检测 41。 谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    这似乎是使用endsWith() 的最佳时机。它确定字符串是否以特定字符或一系列字符结尾。

    endsWith(c("P6-B41A", "P6-B4"), "-B4")
    # [1] FALSE  TRUE
    

    根据help(endsWith),它也比grepl()效率更高。

    【讨论】:

      【解决方案2】:
      grepl("-B4$",c("P6-B41A", "P6-B4"))
      #[1] FALSE  TRUE
      

      【讨论】:

        【解决方案3】:

        另一种选择是提取最后 3 个字符并执行 ==

        substr(v1, nchar(v1)-2, nchar(v1)) == "-B4"
        #[1] FALSE  TRUE
        

        数据

        v1 <- c("P6-B41A", "P6-B4")
        

        【讨论】:

          猜你喜欢
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-04
          • 1970-01-01
          • 2010-11-05
          相关资源
          最近更新 更多