如何替换R中数字旁边而不是字母数字旁边的字符
How replace character next to numeric but not next to alphanumeric in R
我有这个字符串
char <- "866224; Genoma viral SARS-CoV-2: Detectable; 1096628; Genoma viral SARS-CoV-2: No detectable"
我需要更换;数字旁边有 |但保持;像这样在字母数字旁边:
"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"
提前致谢。
在您的示例中,您将数字 和 分号替换为 |
。相反,您可以使用括号捕获数字并将其替换为表达式中的 \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"
{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"
lookbehind (?<=...)
基本上检查后面的表达式是否在 ...
之前。
如果你想在 baseR
中使用它,那么:
gsub("(?<=[0-9]);", "|", char, perl=TRUE)
#> [1] "866224| Genoma viral SARS-CoV-2: Detectable; 1096628| Genoma viral SARS-CoV-2: No detectable"
我有这个字符串
char <- "866224; Genoma viral SARS-CoV-2: Detectable; 1096628; Genoma viral SARS-CoV-2: No detectable"
我需要更换;数字旁边有 |但保持;像这样在字母数字旁边:
"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"
提前致谢。
在您的示例中,您将数字 和 分号替换为 |
。相反,您可以使用括号捕获数字并将其替换为表达式中的 \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"
{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"
lookbehind (?<=...)
基本上检查后面的表达式是否在 ...
之前。
如果你想在 baseR
中使用它,那么:
gsub("(?<=[0-9]);", "|", char, perl=TRUE)
#> [1] "866224| Genoma viral SARS-CoV-2: Detectable; 1096628| Genoma viral SARS-CoV-2: No detectable"