gpt4 book ai didi

R gsub 部分替换通配符

转载 作者:行者123 更新时间:2023-12-04 16:09:02 30 4
gpt4 key购买 nike

我希望这是足够不同的相关,之前的帖子来证明它自己的线程是合理的;不幸的是,他们对我没有帮助。我认为我对部分替换的兴趣,加上通配符的使用迄今为止是独一无二的,但如果我只是没有足够仔细地搜索或阅读,我深表歉意!

假设我有以下字符串:

str <- c("FOO_1", "FOO_2", "BAR_1", "BAR_2")

我想将 FOO_1 末尾的 1 替换为其他内容,比如 A。我尝试对两者都这样做

gsub("[^F.*](1)$", "\\_A", str)

gsub("^F.*(1)$", "\\_BLAH", str)

但很明显,它们都无法替换 1,从而使 FOO_ 的其余部分完好无损,同时也没有改变 BAR_1 。对于这个问题,我有一个愚蠢的解决方案,它只涉及一行 grep() 和一行 gsub(),但如果那是我的解决方案,我会讨厌自己.

最佳答案

I only want to replace variables starting with FOO and ending with 1

捕获 FOO 及其后的所有内容到第 1 组,并仅匹配字符串末尾的 _1。然后,在替换模式中,使用对 Group1 值的替换反向引用:

str <- c("FOO_1", "FOO_2", "BAR_1", "BAR_2")
sub("^(FOO.*)_1$", "\\1_A", str)
## => [1] "FOO_A" "FOO_2" "BAR_1" "BAR_2"

参见 this R demo

如果必须匹配字符串末尾的任何数字数量,请将 1 替换为 \\d+

详情

  • ^ - 字符串开始
  • (FOO.*) - FOO 子字符串,然后是任何 0+ 个字符,尽可能多
  • _1 - _1 子字符串(如果将 1 替换为 \\d+,它将匹配 1或更多数字)
  • $ - 字符串结尾。

关于R gsub 部分替换通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287437/

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