我有一个字符串向量,格式为“IN_D44_A09_ET”,我想使用stringr包提取数字9。我一直试图使用str_extract()来解决这个问题,但是我不知道如何用公式表示这个模式。
values <- c("IN_D44_A09_CT", "XE_D34_A15_ET") str_extract(values, "_A(\\d+)")
此模式提取“_A09”和“_A15”,但我需要的是“9”和“15”。
rjee0c151#
你可以试试sub
sub
sub(".*_A0*(.*)_.*","\\1",values) #[1] "9" "15"
qfe3c7zg2#
你可以使用lookbehind模式-
as.integer(stringr::str_extract(values, '(?<=A)\\d+')) #[1] 9 15
fcg9iug33#
一种方法是使用str_extract两次,在第一次str_exract中,无论您得到什么输出,都将其存储为向量,然后再次运行str_extract以获得所需的输出。以下是您可以如何做到这一点:
str_extract
str_exract
values <- c("IN_D44_A09_CT", "XE_D34_A15_ET") temp <- str_extract(values, "A(\\d+)") str_extract(temp, "(\\d+)")
w80xi6nr4#
library(stringr) values <- c("IN_D44_A09_CT", "XE_D34_A15_ET") str_match(values, 'A(\\d+)')[, 2] #> [1] "09" "15"
由reprex package(v2.0.1)于2022年1月22日创建如果要删除零:
library(stringr) values <- c("IN_D44_A00090_CT", "XE_D34_A0015_ET") str_match(values, 'A(\\d+)')[, 2] %>% str_replace('^0+', '') #> [1] "90" "15"
由reprex package(v2.0.1)于2022年1月22日创建
4条答案
按热度按时间rjee0c151#
你可以试试
sub
qfe3c7zg2#
你可以使用lookbehind模式-
fcg9iug33#
一种方法是使用
str_extract
两次,在第一次str_exract
中,无论您得到什么输出,都将其存储为向量,然后再次运行str_extract
以获得所需的输出。以下是您可以如何做到这一点:
w80xi6nr4#
由reprex package(v2.0.1)于2022年1月22日创建
如果要删除零:
由reprex package(v2.0.1)于2022年1月22日创建