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