gpt4 book ai didi

regex - 将字符分组后的字符替换为空

转载 作者:行者123 更新时间:2023-12-01 02:03:52 27 4
gpt4 key购买 nike

我有一个带有最大宽度为 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|"))

我的特定字符对是任何数字后跟 |

这意味着第 1 行很好,第 2 行将删除“10.2”后的所有内容,第 3 行将删除 0.48 后的所有内容

我试过这个正则表达式:
df[,2] <- sub("([^0-9]+[^|]*$)", "", df[,2])

它几乎几乎起作用了,但是我的数据中很少有在解释中出现数字的行并没有发挥作用。有什么线索吗?我还不是一个伟大的正则表达式,学习绳索

我看到了 this question关于分组,但不能完全适用于我的问题。

最佳答案

使用 sub ,我们捕获一个或多个字符( .* ),然后是多个数字之一,然后是一个点(如果存在)( \\.? ),然后是一个或多个作为一组的数字,然后是 |和其余的字符,直到字符串的末尾。在替换中,指定了捕获组 ( \\1 )。

sub('^(.*[0-9]+\\.?[0-9]+)\\|.*$', '\\1', df$text)

关于regex - 将字符分组后的字符替换为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34178610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com