r - R 中是否可以为正则表达式子字符串提供一组选项?

标签 r regex substring

我有一个数据框,其中包含一些带有字符串形式的错误消息的单元格。字符串有以下形式:

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"

我需要提取错误的编号(如果有)和一般描述,避免 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 anchor ERROR的建议,使其更通用:

gsub("\\sfor.*|^ERROR-","",tsxt, perl=TRUE)

关于r - R 中是否可以为正则表达式子字符串提供一组选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57176848/

相关文章:

Python IDLE 相当于 R 中的 CTRL-R

python - QRegExp 可以进行 MULTILINE 和 DOTALL 匹配吗?

ruby-on-rails - 我怎样才能加快这个正则表达式?

r - 为什么 %in% 匹配字符串时返回 false?

r - 在 R 的 full_join 中添加数据集标识符变量

regex - 如何将单列中的内容拆分为 R 中的两个单独的列?

数字四舍五入

python - 将 4.7uF 替换为 4U7 的正则表达式

algorithm - 我们如何使用 Ukkonen 的后缀树来识别文档中所有常见的子字符串。 VC++

字符串包含特殊字符时的 C++ substr() 问题