r - 删除 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)
请参阅正则表达式演示。替代:
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"
推荐阅读
- html - 无法更改覆盖文本的颜色
- javascript - React Redux 状态在渲染另一个组件后停止更改
- elasticsearch - 为什么在Elasticsearch中搜索A找不到内容,但是AA可以
- sql - as.character(query) 中的错误:无法将类型“闭包”强制转换为“字符”类型的向量
- tomcat - Tomcat访问日志旋转文件在几分钟内删除
- swift - SwiftUI:自定义底页半开时无法滚动
- sql - 如何将大型 xmlType 数据从一个表插入到另一个表。ORA-19011: 字符串缓冲区太小
- python - 如何基于多个列将一个数据帧中的列添加到另一个数据帧
- sql - oracle 中的每周最大计数记录
- angular - 在 Angular 中的每个 API 之上调用一个通用 API