R gsub 部分替换通配符
R gsub partial replacement wildcards
我希望这是足够不同的相关,之前的帖子来证明它自己的主题;不幸的是,他们对我没有帮助。我认为我对部分替换的兴趣 plus 通配符的使用迄今为止是独一无二的,但如果我没有足够仔细地搜索或阅读,我深表歉意!
假设我有以下字符串:
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"
如果必须匹配字符串末尾的任何数字金额,请将 1
替换为 \d+
。
详情
^
- 字符串开始
(FOO.*)
- FOO
子字符串,然后是任何 0+ 个字符,尽可能多
_1
- _1
子字符串(如果将 1
替换为 \d+
,它将匹配 1 个或多个数字)
$
- 字符串结尾。
我希望这是足够不同的相关,之前的帖子来证明它自己的主题;不幸的是,他们对我没有帮助。我认为我对部分替换的兴趣 plus 通配符的使用迄今为止是独一无二的,但如果我没有足够仔细地搜索或阅读,我深表歉意!
假设我有以下字符串:
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 with1
捕获 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"
如果必须匹配字符串末尾的任何数字金额,请将 1
替换为 \d+
。
详情
^
- 字符串开始(FOO.*)
-FOO
子字符串,然后是任何 0+ 个字符,尽可能多_1
-_1
子字符串(如果将1
替换为\d+
,它将匹配 1 个或多个数字)$
- 字符串结尾。