我有一个数据框,其中包含一些带有字符串形式的错误消息的单元格。字符串有以下形式:
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/