【发布时间】:2019-11-19 00:17:53
【问题描述】:
我需要有关提取由下划线分隔的第三个元素的正则表达式的帮助。下划线的数量是可变的。我可以使用 str_split 来做到这一点,但是有没有办法使用 str_replace 获得与以下相同的结果?
(期望的结果是x = AAAA, BBBB, CCCC, DDDD。如果可能的话,使用()维护分组。)
library(tidyverse)
library(stringr)
d <- enframe(c("asfe_01_AAAA_fses_feee",
"asfe_87_BBBB_fses_feee",
"99_fesf_CCCC_feee",
"99_fesf_DDDD"),
name = NULL, value = "txt")
d %>%
mutate(x = str_replace(txt, "(.+)_(.+)_(.+)_*(.*)_*(.*)", "\\3"),
want_strsplit = str_split(txt, "_", simplify = TRUE)[, 3])
#txt x want_strsplit
# <chr> <chr> <chr>
#1 asfe_01_AAAA_fses_feee feee AAAA
#2 asfe_87_BBBB_fses_feee feee BBBB
#3 99_fesf_CCCC_feee feee CCCC
#4 99_fesf_DDDD DDDD DDDD
【问题讨论】: