匹配&在R中使用替换中的原始字符串替换字符串

时间:2016-12-08 14:46:01

标签: r regex string

我正试图掌握R中正则表达式的世界。

我想知道是否有任何简单的方法来组合“grep”和“gsub”的功能?

具体来说,我想在与特定模式匹配的任何内容中添加一些附加信息。

对于一般示例,假设我有一个字符向量:

char_vec <- c("A","A B","123?")

然后我想说我想在char_vec的任何元素中追加任何字母

append <- "_APPEND"

结果如下:

[1] "A_APPEND"          "A_APPEND B_APPEND" "123?"

显然gsub可以用append替换字母,但这不会保留原始表达式(而grep会返回字母但不会附加!)。

提前感谢您提供任何/所有帮助!

2 个答案:

答案 0 :(得分:3)

您似乎不熟悉后向引用,您可以在(g)sub中的替换模式中使用。使用捕获组包装模式的一部分后,您可以稍后将此值放回替换的结果中。

因此,仅仅gsub解决方案是可能的:

char_vec <- c("A","A B","123?")
append <- "_APPEND"
gsub("([[:alpha:]])", paste0("\\1", append), char_vec)
## => [1] "A_APPEND"          "A_APPEND B_APPEND" "123?" 

请参阅this R demo

此处,([[:alpha:]])匹配并捕获到第1组中的任何字母,替换中的\1会将此值重新插入到结果中。

答案 1 :(得分:0)

绝对不像@WiktorStribiżew那样光滑,但这是我为另一种方法开发的。

"Value": 849.3000000000001