我可以帮助您翻译,这段内容涉及编程,主要是处理一个最大宽度为200的文本列的CSV文件。在大多数情况下,数据都很好。但在某些情况下,数据过长或未填写完整,我希望使用正则表达式来查找特定数字/字符配对的最后一个实例,然后删除其后的所有内容。
例如数据:
df <- data.frame(ID = c("1","2","3"),
text = c("A|explain what a is|12.2|Y|explain Y|2.36|",
"A|explain what a is|15.2|E|explain E|10.2|E|explain E but run out hal",
"D|explain what d is|0.48|Z|explain z but number 5 is present|"))
我的特定字符对是任何数字后面跟着一个 |
这意味着第一行没问题,第二行将删除“10.2”后面的所有内容,第三行将删除0.48后面的所有内容
我尝试了这个正则表达式:
df[,2] <- sub("([^0-9]+[^|]*$)", "", df[,2])
它几乎成功了,但是我的数据中只有很少的几行在解释中有数字,这些行并不适用。有什么线索吗?我还不是一个很好的正则表达式使用者,正在学习中。
我看到了这个问题关于分组,但是无法完全应用到我的问题上。
sub('(.*[0-9]+)\\|.*', '\\1', df$text)
,我只是在评论\\.[0-9]+
,这将仅保留小数。 - Cath