删除带有 2 个字母后跟 2 位数字的字母数字

remove alphanumeric with 2 alphabets followed by 2 digits

a <- c("it is ZZ10ASDJN123 and ZZ100DD22")

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

预期输出:

"it is and ZZ100DD22"

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

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

您可以使用

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-aware.

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"