r - 如何使用任何部分匹配的字符串 gsub 字符串

标签 r regex

我的字符串为:

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/

相关文章:

r - ggplot2 facet_wrap 的文本标签

mysql - 如何通过R连接到远程服务器?

regex - R中的Excel RegEx函数

regex - 使用一组字母与一个实例匹配单词

r - 如何删除给定 ID 只有 1 个组合的行

r - 如何从函数内打印空行?

r - 由于特殊字符而面临更改数据帧结构的问题

regex - Windows 中的 Perl 单行代码

regex - 去正则表达式 FindAllStringSubmatch

regex - 正则表达式,我可以排除字符对吗?