我有:
> pattern
[1] "(/[[:digit:]]{4}/)"
所以我想只提取匹配的部分...数字加上/.../。这是我试过的:
> gsub(pattern, '\\1', grep(pattern, c("t3tg3wgw/5764/", "ggg", "grsgs/gwgew/5656/bfsbs"), value=TRUE))
[1] "t3tg3wgw/5764/" "grsgs/gwgew/5656/bfsbs"
然而,这仍会返回附加到实际匹配的字母,这些字母本身不与正则表达式匹配。如何仅提取/5764/
和/5656/
?
答案 0 :(得分:0)
我们可以使用/
中的[0-9]+
提取模式/
后跟一个或多个数字(str_extract_all
),然后library(stringr)
来输出list
1}},可unlist
转换为vector
library(stringr)
unlist(str_extract_all(v1, '/[0-9]+/'))
#[1] "/5764/" "/5656/"
或者我们使用相同的模式并使用regmatches/gregexpr
base R
unlist(regmatches(v1, gregexpr('/[0-9]+/',v1)))
#[1] "/5764/" "/5656/"
v1 <- c("t3tg3wgw/5764/", "ggg", "grsgs/gwgew/5656/bfsbs")
答案 1 :(得分:0)
尝试将模式更改为.*(/[[:digit:]]{4}/).*