我有一个字符串向量,格式如下"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〃;。
您可以尝试sub
sub(".*_A0*(.*)_.*","\1",values)
#[1] "9" "15"
您可以使用后备模式-
as.integer(stringr::str_extract(values, '(?<=A)\d+'))
#[1] 9 15
一种方法可以是使用str_extract
两次。在第一个str_exract
中,无论您得到什么输出,都将其存储为向量,然后再次运行str_extract
以获得所需的输出。
以下是如何做到这一点:
values <- c("IN_D44_A09_CT", "XE_D34_A15_ET")
temp <- str_extract(values, "A(\d+)")
str_extract(temp, "(\d+)")
library(stringr)
values <- c("IN_D44_A09_CT", "XE_D34_A15_ET")
str_match(values, 'A(\d+)')[, 2]
#> [1] "09" "15"
创建于2022-01-22由reprex包(v2.0.1(
如果我们想删除零:
library(stringr)
values <- c("IN_D44_A00090_CT", "XE_D34_A0015_ET")
str_match(values, 'A(\d+)')[, 2] %>% str_replace('^0+', '')
#> [1] "90" "15"
创建于2022-01-22由reprex包(v2.0.1(