r - 是否可以在 R 中为正则表达式子字符串提供一组选项?
问题描述
我有一个数据框,其中包含一些带有错误消息的单元格作为字符串。字符串有以下形式:
ERROR-100_Data not found for ID "xxx"
ERROR-100_Data not found for id "xxx"
ERROR-101_Data not found for SUBID "yyy"
Data not found for ID "xxx"
Data not found for id "xxx"
我需要提取错误的编号(如果有的话)和 GENERAL 描述,避免 ID 或 SUBID 的特殊性。我有一个使用以下正则表达式的函数:
sub(".*?ERROR-(.*?)for ID.*","\\1",df[,col1],sep="-")
这仅适用于第一种情况。有没有办法只使用一个表达式来获得以下结果?
100_Data not found
100_Data not found
101_Data not found
Data not found
Data not found
解决方案
我们可以用:
tsxt <- 'ERROR-100_Data not found for ID "xxx"'
gsub("\\sfor.*|ERROR-","",tsxt, perl=TRUE)
[1] "101_Data not found"
或如@Jan 锚所建议的那样ERROR
使其更通用:
gsub("\\sfor.*|^ERROR-","",tsxt, perl=TRUE)
推荐阅读
- tomcat - 在 IntelliJ IDEA 上配置本地 Tomcat 服务器
- ios - 在 iOS Flutter webview 应用程序中从左滑动返回到上一个屏幕
- continuous-integration - 使用 PyQT 运行 CI 测试
- azure - 如何将管道变量传递给参数文件以进行蓝图分配
- php - 我编写代码简单更新及其运行但名称字段值在输入框中未正确获取,它仅在空白字符串之前获取
- angular - Angular / Nebular 主题颜色 - 这是哪个
- asp.net-mvc - 如何在 OnAuthorizationCodeReceived 中访问会话
- google-chrome - Linux(Ubuntu)上的谷歌浏览器本地存储保存在哪里?
- laravel-8 - 在 dd 中获取价值,但不是在 laravel 中的特定 div
- c++ - 如何在共享库(Linux)中嵌入静态库?