r-使用字符串提取模式



我有一个字符串向量,格式如下"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(

最新更新