gpt4 book ai didi

r - 如何用小写字母替换最后一个点后的某些字符

转载 作者:行者123 更新时间:2023-12-02 05:47:03 24 4
gpt4 key购买 nike

一个简单的问题,但我无法解决。我得到了一个像这样的邮件地址的字符串:

ma <- "something@somewhere.COM"

我的目标是:

"something@somewhere.com"

所以把最后一个点后面的部分小写。我读过 this , this ,所以我尝试了:

gsub(".*\\.","\\L\\1", ma, perl = T) 
[1] "COM" # nope

还有类似的东西:

library(gsubfn)
options(gsubfn.engine = "R")
gsubfn(".*\\.", ~ tolower(x), ma)
[1] "something@somewhere.COM" # nope

我很困惑,因为我似乎可以获取我想要替换的部分:

gsub(".*\\.","", ma)
[1] "COM"

但我无法正确替换它。如果您能给出解决方案的解释,我将不胜感激,正则表达式不是我最强的功能。

最佳答案

\\L & \\U 适用于 capturing group -- 你的第一次尝试很接近,但没有说明将命令应用到哪个组:

ma <-"something@somewhere.COM"
gsub('(.*\\.)(.*)$', '\\1\\L\\2', ma, perl = TRUE)
# [1] "something@somewhere.com"

请注意,我们捕获了两个组——(和包括). 的部分,我们不理会它;以及 . 之后的部分 ,我们将其转为小写。

另请注意,使用此正则表达式可能更安全,以防止 的贪婪匹配出现任何问题。:

gsub('(.*\\.)([^.]*)$', '\\1\\L\\2', ma, perl = TRUE)
# [1] "something@somewhere.com"

关于r - 如何用小写字母替换最后一个点后的某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457871/

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