a <- c("it is ZZ10ASDJN123 and ZZ100DD22")
我如何删除以前2个字母开头然后以2位数字开头的单词 并且不要删除超过2个数字的字母数字。
预期输出:
"it is and ZZ100DD22"
此代码仅删除数字。请帮助我获得预期的输出。
gsub('[[:digit:]]+', '', a)
答案 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意识。
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"