我的字符串为:
cc <- c("Bacter;httyh;ttyyyt", "Bacteria;hhhdh;hhgt;hhhg", "Bacter;hhhhdj;gg;dd", "Bactr;hhhg;ggj", "Bctg;hhgg;hhj")
我想替换任何匹配的文本
Bact
前先;
并将其替换为 Bctr
.我试过:
gsub("[Bact*]+;", "Bctr", cc)
所以,我想要的结果是
Bctr;httyh;ttyyyt, Bctr;hhhdh;hhgt;hhhg, Bctr;hhhhdj;gg;dd, Bctr;hhhg;ggj, Bctg;hhgg;hhj
我在这里缺少什么建议?
最佳答案
我们可以使用 sub
并从 "Bact"
替换直到第一个分号 "Bctr";
sub("Bact.*?;", "Bctr;", cc)
#[1] "Bctr;httyh;ttyyyt" "Bctr;hhhdh;hhgt;hhhg" "Bctr;hhhhdj;gg;dd" "Bctr;hhhg;ggj"
*?
用于延迟匹配,使其匹配尽可能少的字符。所以在这里它在与第一个分号匹配后停止。如果我们删除
?
,区别就会很明显。从中。sub("Bact.*;", "Bctr;", cc)
#[1] "Bctr;ttyyyt" "Bctr;hhhg" "Bctr;dd" "Bctr;ggj"
现在它匹配到
cc
中的最后一个分号.
关于r - 如何使用任何部分匹配的字符串 gsub 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045870/