gpt4 book ai didi

r - 在最后一个点之后提取子串

转载 作者:行者123 更新时间:2023-12-05 00:11:13 25 4
gpt4 key购买 nike

我想实现一个正则表达式来提取最后一个点之后的子字符串。
例如,

a = c("a.b.c.d", "e.b.e", "c", "f.d.e", "a.e.b.g.z")
gsub(".*(\\..*)$", "\\1", a)

代码返回
".d" ".e" "c"  ".e" ".z"

我如何修改代码以获取
"d" "e" ""  "e" "z"

也就是说,如果字符串中包含点,则去掉最后没有点的部分;如果字符串不包含点,它将返回“”。

最佳答案

这是一种使用 sub 执行此操作的方法没有捕获组。我们可以尝试用空字符串替换包括最后一个点在内的所有内容。

a = c("a.b.c.d", "e.b.e", "c", "f.d.e", "a.e.b.g.z")
sub(".*\\.", "", a)

[1] "d" "e" "c" "e" "z"

如果你想在输入没有点的情况下返回空字符串,那么我们可以使用 ifelsegrepl :
input <- "Hello World!"
output <- ifelse(grepl("\\.", input), sub(".*\\.", "", input), "")

上面代码冗长的原因是 sub默认情况下,如果找不到匹配项,则只返回原始字符串。但是,就您而言,您想要不同的行为。

关于r - 在最后一个点之后提取子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54191571/

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