regex 使用字符串提取模式

6mw9ycah  于 2023-03-04  发布在  其他
关注(0)|答案(4)|浏览(121)

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

rjee0c15

rjee0c151#

你可以试试sub

sub(".*_A0*(.*)_.*","\\1",values)
#[1] "9"  "15"
qfe3c7zg

qfe3c7zg2#

你可以使用lookbehind模式-

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

fcg9iug33#

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

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日创建

相关问题