a <- c("it is ZZ10ASDJN123 and ZZ100DD22")
我如何删除以前两个字母开头,然后是两个数字开头的单词并且不删除任何超过后面的2+数字的字母数字。
预期输出:
"it is and ZZ100DD22"
此代码仅删除数字。请帮我获得预期的产出。
gsub('[[:digit:]]+', '', a)
您可以使用
gsub("\s*\b[A-Za-z]{2}\d{2}(?!\d)\w*\b", "", a, perl=TRUE)
请参阅regex演示。另一种选择:
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演示:
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"