我想在字符串中提取以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
我很感激您也写下了一些解释,因为正则表达式目前对我来说很复杂:)
答案 0 :(得分:3)
要获得正确的正则表达式,您目前希望匹配1
,文字.
,然后是两位数。在正则表达式中,.
表示任何字符,因此您需要使用\
对其进行转义。但是,因为\
是R中字符串中的特殊字符,这意味着您还需要转义\
,因此您键入\\.
。然后,您想要匹配一个或两个数字。使用量词{1,2}
来指定一个或两个是正确的,但您需要告诉表达式您需要具体的数字。您可以使用[:digit:]
或速记\\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中正则表达式和正则表达式的更多信息,请参阅chapter in R for Data Science,并查看来自RStudio的stringr
的方便cheatsheet。