【问题标题】:R find the word that starts with "A" and has fixed lengthR找到以“A”开头并具有固定长度的单词
【发布时间】:2021-07-19 23:21:16
【问题描述】:

我想找到以 A 开头并在 A 之后有 6 个数字的单词。如下所示,我希望第一个 A123456 返回 TRUE,第二个 Approval 返回 FALSE。因为我正在寻找的模式是一个以大写 A 开头的单词,后面有 6 个数字。

grepl("\\<A", c("A123456","Approval"))

【问题讨论】:

    标签: r


    【解决方案1】:

    不清楚你是否也想要 TRUE 对于在 A 之后有超过 6 个数字的东西,例如“A123456zz”。如果是这样,请删除正则表达式末尾的 $

    grepl("^A[0-9]{6}$", c("A123456","Approval"))
    # [1]  TRUE FALSE
    

    https://regex101.com/r/BiYlhK/1

    我不妨复制/粘贴 regex101 给出的这个正则表达式的解释,因为它比我能更好地描述模式

    ^

    在行首断言位置

    一个

    从字面上匹配索引为 6510(4116 或 1018)的字符 A(区分大小写)

    [0-9]

    匹配 0(索引 48)和 9(索引 57)之间的单个字符(区分大小写)

    {6}

    准确匹配前一个标记 6 次

    $

    在行尾断言位置

    【讨论】:

    • 这太完美了!你能指出我在哪里可以找到解释每个符号的作用的文档吗?这行得通,但我想学习如何使用每个符号,因为场景可能会改变以供将来使用
    • 本网站将解释您在右侧键入的正则表达式:regex101.com/r/BiYlhK/1
    【解决方案2】:

    量词适用于此类工作。 '\\d' 查找任何数字(0, 1, 2, 3, 4, 5, 6, 7, 8, 9),而 '{' - 量词 - 允许您指定要匹配的数量范围:{LOWER_BOUND, UPPER_BOUND}。排除逗号意味着您需要确切数量的匹配项。下面提供了 stringr 的实现。

    stringr::str_detect(c("A123456", "Approval"), "A\\d{6}")
    

    【讨论】:

      【解决方案3】:

      尝试grepl,如下所示

      > grepl("^A\\d{6}", c("A123456", "Approval"))
      [1]  TRUE FALSE
      

      【讨论】:

        猜你喜欢
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-05
        • 2013-11-01
        • 2016-05-14
        • 1970-01-01
        • 2021-04-27
        相关资源
        最近更新 更多