我有这根绳子
char <- "866224; Genoma viral SARS-CoV-2: Detectable; 1096628; Genoma viral SARS-CoV-2: No detectable"我需要替换;在数字的旁边,用\{e76f}下面的字母数字:
"866224| Genoma viral SARS-CoV-2: Detectable; 1096628| Genoma viral SARS-CoV-2: No detectable"我和str_replace_all在一起
str_replace_all(char, "[0-9];", "|")但是去掉最后一个号码。
"86622| Genoma viral SARS-CoV-2: Detectable; 109662| Genoma viral SARS-CoV-2: No detectable"提前谢谢。
发布于 2020-10-23 01:26:39
{stringr}包允许查看头和查找,您可以使用它们而不是实际捕获最后一个数字,然后粘贴它:
char <- "866224; Genoma viral SARS-CoV-2: Detectable; 1096628; Genoma viral SARS-CoV-2: No detectable"
str_replace_all(char, "(?<=[0-9]);", "|")
#> [1] "866224| Genoma viral SARS-CoV-2: Detectable; 1096628| Genoma viral SARS-CoV-2: No detectable"查找后面的(?<=...)基本上检查后面的表达式是否前面有...。如果您想在baseR中使用它,那么:
gsub("(?<=[0-9]);", "|", char, perl=TRUE)
#> [1] "866224| Genoma viral SARS-CoV-2: Detectable; 1096628| Genoma viral SARS-CoV-2: No detectable"发布于 2020-10-23 00:49:45
在您的示例中,将数字和分号替换为|。相反,您可以用括号捕获数字,并在表达式中用\\1替换它。
library(stringr)
char <- "866224; Genoma viral SARS-CoV-2: Detectable; 1096628; Genoma viral SARS-CoV-2: No detectable"
str_replace_all(char, "([0-9]);", "\\1|")
#> [1] "866224| Genoma viral SARS-CoV-2: Detectable; 1096628| Genoma viral SARS-CoV-2: No detectable"https://stackoverflow.com/questions/64492166
复制相似问题