gpt4 book ai didi

r - 需要正则表达式逻辑

转载 作者:行者123 更新时间:2023-12-04 09:49:20 24 4
gpt4 key购买 nike

我有一个向量 a 如下:

a <- c("Rs. 360 Rs. 540 [-33% ]", "Rs. 213 Rs. 250 [-15% ]", "Rs. 430 Rs. 1030 [-58% ]")

需要回答如下:

a 应该有 Rs.360、Rs.213、Rs.430

我用过:

a <- gsub(" Rs*", "", a)

最佳答案

正如我在评论中所说,如果您始终具有相同的模式(相同的位数),您可以使用 substr 来提取字符串的开头。如果您愿意,可以进一步压缩空间:

substr(a, 1, 7)
[1] "Rs. 360" "Rs. 213" "Rs. 430"
sub(" ", "", substr(a, 1, 7))
[1] "Rs.360" "Rs.213" "Rs.430"

或者你可以在字符串中捕获你想要的模式并用它形成另一个字符串:

gsub("^[A-Za-z.]{3} (\\d{3}).+", "Rs.\\1", a)
[1] "Rs.360" "Rs.213" "Rs.430"

在这里您只捕获 3 位数字并明确放回 Rs.

或者您可以“删除”您不想要的所有内容:空间和您想要保留的模式之后的所有内容:

gsub("(\\s)|([A-Za-z0-9. ]{8}\\s\\[-*\\d+%\\s*\\])", "", a)
[1] "Rs.360" "Rs.213" "Rs.430"

在这里,您指定要禁止显示空格 (\\s) 和/或 8 个字母数字或点或空格字符,后跟空格、左括号、无或减号、多于一个数字、% 符号、无或空格,最后是右括号。

关于r - 需要正则表达式逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39765469/

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