删除2个字母后跟2个数字的字母数字

时间:2020-09-07 09:59:03

标签: r regex gsub alphanumeric

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

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

预期输出:

"it is and ZZ100DD22"

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

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

1 个答案:

答案 0 :(得分: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"
相关问题