搜索并替换为匹配的子字符串?

时间:2019-11-18 00:01:33

标签: r regex

很抱歉,这很糟糕,因为我似乎找不到解决方法。假设我有一个向量。

162_562-5_ZE5_ONE
163_662-5_AE5_ZERO

但是,我想删除除ZE5和AE5以外的所有样式,并附加AC。在前。有没有办法grep这个并保留字符串的一部分,以便我可以在它后面添加一些内容。理想情况下,新向量将仅返回AC.ZE5,AC.AE5。我本来可以做两个gsub,但我想知道是否可以保留搜索的特定部分并附加一些内容。谢谢!

2 个答案:

答案 0 :(得分:3)

我们可以在基数R中使用sub,提取"ZE5""AE5"并在每个数字的开头添加"AC."

sub(".*(ZE5|AE5).*", "AC.\\1", x)
#[1] "AC.ZE5" "AC.AE5"

如@Ahdee所述,一种更通用的解决方案是

sub("^\\d.*-\\d_(.*?)_.*", "AC.\\1", x)

数据

x <- c("162_562-5_ZE5_ONE", "163_662-5_AE5_ZERO")

答案 1 :(得分:0)

我正在尝试学习这一点。我想知道您是否还可以使用stringr

x <- c("162_562-5_ZE5_ONE", "163_662-5_AE5_ZERO")
paste0("AC.", stringr::str_extract(x, "ZE5|AE5"))