我正试图掌握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
会返回字母但不会附加!)。
提前感谢您提供任何/所有帮助!
答案 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