提取字符串和一些数字
Extract string and some number of digits
我想提取字符串中以 1.
开头的模式。经过一些研究,我发现了 stringr
包和 str_extract
函数。但它正在提取迄今为止唯一的第一个匹配项。
library(stringr)
library(dplyr)
clas <- c("1461CD_1.332C","1461CD_1.5C_242","1461CD_1.6CC_131")
df <- data.frame(clas)
df %>% mutate(clas = str_extract(clas, "1.{1,2}"))
clas
1 146
2 146
3 146
预期输出
clas
1 1.33
2 1.5
3 1.6
如果你也写下对你的解决方案的一些解释,我将不胜感激,因为正则表达式目前对我来说是复杂的主题:)
要获得正确的正则表达式,您目前想要匹配 1
、文字 .
,然后是两位数字。在正则表达式中,.
表示任意字符,需要用\
转义。但是,因为 \
是 R 字符串中的一个特殊字符,这意味着您还需要对 \
进行转义,因此您键入 \.
。然后,您想要匹配一个或两个数字。用量词{1,2}
来指定一个或两个是正确的,但是你需要明确地告诉表达式你想要数字。您可以使用 [:digit:]
或 shorthand \d
来执行此操作。这给出了所需的输出:
library(tidyverse)
clas <- c("1461CD_1.332C","1461CD_1.5C_242","1461CD_1.6CC_131")
df <- data.frame(clas)
df %>%
mutate(clas = str_extract(clas, "1\.\d{1,2}"))
#> clas
#> 1 1.33
#> 2 1.5
#> 3 1.6
由 reprex package (v0.2.0) 创建于 2018-02-20。
有关 R 中正则表达式和正则表达式的更多信息,请参阅 RStudio 中 stringr
的 chapter in R for Data Science and also look at the handy cheatsheet。
我想提取字符串中以 1.
开头的模式。经过一些研究,我发现了 stringr
包和 str_extract
函数。但它正在提取迄今为止唯一的第一个匹配项。
library(stringr)
library(dplyr)
clas <- c("1461CD_1.332C","1461CD_1.5C_242","1461CD_1.6CC_131")
df <- data.frame(clas)
df %>% mutate(clas = str_extract(clas, "1.{1,2}"))
clas
1 146
2 146
3 146
预期输出
clas
1 1.33
2 1.5
3 1.6
如果你也写下对你的解决方案的一些解释,我将不胜感激,因为正则表达式目前对我来说是复杂的主题:)
要获得正确的正则表达式,您目前想要匹配 1
、文字 .
,然后是两位数字。在正则表达式中,.
表示任意字符,需要用\
转义。但是,因为 \
是 R 字符串中的一个特殊字符,这意味着您还需要对 \
进行转义,因此您键入 \.
。然后,您想要匹配一个或两个数字。用量词{1,2}
来指定一个或两个是正确的,但是你需要明确地告诉表达式你想要数字。您可以使用 [:digit:]
或 shorthand \d
来执行此操作。这给出了所需的输出:
library(tidyverse)
clas <- c("1461CD_1.332C","1461CD_1.5C_242","1461CD_1.6CC_131")
df <- data.frame(clas)
df %>%
mutate(clas = str_extract(clas, "1\.\d{1,2}"))
#> clas
#> 1 1.33
#> 2 1.5
#> 3 1.6
由 reprex package (v0.2.0) 创建于 2018-02-20。
有关 R 中正则表达式和正则表达式的更多信息,请参阅 RStudio 中 stringr
的 chapter in R for Data Science and also look at the handy cheatsheet。