使用 stringr 提取模式

extract pattern using stringr

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

一种方法是使用 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+)")

你可以试试sub

sub(".*_A0*(.*)_.*","\1",values)
#[1] "9"  "15"
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 日创建

您可以使用后视模式 -

as.integer(stringr::str_extract(values, '(?<=A)\d+'))
#[1]  9 15