如何从模式后面的字符串中有选择地删除字符?
我希望删除7个数字和前面的冒号。
例如:
"((Northern_b:0.005926,Tropical_b:0.000000)N19:0.002950"
应该成为
"((Northern_b,Tropical_b)N19"
答案 0 :(得分:2)
x <- "((Northern_b:0.005926,Tropical_b:0.000000)N19:0.002950"
gsub("[:]\\d{1}[.]\\d{6}", "", x)
gsub
函数执行字符串替换并替换字符串中找到的所有匹配项(请参阅?gsub
)。另一种方法是,如果您想要一个名称更友好的内容,则str_replace_all
包中的内容为stringr
。
正则表达式使用\\d{n}
搜索,查找数字。整数表示要查找的位数。因此\\d{1}
会查找长度为1的一组数字。\\d{6}
查找一组长度为6的数字。
答案 1 :(得分:1)
gsub('[:][0-9.]+','',x)
[1] "((Northern_b,Tropical_b)N19"
答案 2 :(得分:0)
解决此问题的另一种方法
library(stringr)
str1 <- c("((Northern_b:0.005926,Tropical_b:0.000000)N19:0.002950")
str_replace_all(str1, regex("(:\\d{1,}\\.\\d{1,})"), "")
#[1] "((Northern_b,Tropical_b)N19"