【问题标题】:remove alphanumeric with 2 alphabets followed by 2 digits删除 2 个字母后跟 2 个数字的字母数字
【发布时间】:2020-09-07 09:59:03
【问题描述】:
a <- c("it is ZZ10ASDJN123 and ZZ100DD22")

如何删除以前 2 个字母开头后跟 2 个数字开头的单词 并且不要删除任何超过 2 + 位数字的字母数字。

预期输出:

"it is and ZZ100DD22"

此代码仅删除数字。请帮助我获得预期的输出。

gsub('[[:digit:]]+', '', a)

【问题讨论】:

    标签: r regex gsub alphanumeric


    【解决方案1】:

    你可以使用

    gsub("\\s*\\b[A-Za-z]{2}\\d{2}(?!\\d)\\w*\\b", "", a, perl=TRUE)
    

    请参阅regex demo。另一种选择:

    gsub("\\s*\\b[A-Za-z]{2}\\d{2}[A-Za-z_]\\w*\\b", "", a)
    

    详情

    • \s* - 0 个或更多空白字符
    • \b - 单词边界
    • [A-Za-z]{2} - 两个 ASCII 字母(使用 \p{L} 匹配任何 Unicode 字母)
    • \d{2} - 两位数
    • (?!\d) - 右边不能有数字
    • \w* - 0 个或多个字母、数字或下划线
    • \b - 字边界。

    在正则表达式的开头添加 (*UCP) 以使其完全识别 Uniocde。

    R demo:

    a <- c("it is ZZ10ASDJN123 and ZZ100DD22")
    gsub("\\s*\\b[A-Za-z]{2}\\d{2}(?!\\d)\\w*", "", a, perl=TRUE)
    ## => [1] "it is and ZZ100DD22"
    

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多