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

问题描述

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意识。

R demo

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