我的数据:
d1 <- "GET /api/dir/100%ABC/user/prints/abcd1111/file"
d2 <- "GET /api/dir/100%ABC/prints/efgh1111/file"
我想从我的数据中提取字符串:user/prints
或prints
部分。
我知道如何在2个特定字符串之间提取:
str_extract(d1, "(?<=/dir/)(.*)(?=%ABC)")
获取数字100
。
如何提取%ABC/
之后并以prints
结尾(包含prints
),以便可以从同一脚本中获取user/prints
或prints
。
答案 0 :(得分:2)
不太优雅,但是应该这样做:
paste0(str_extract(d1, "(?<=%ABC)(.*)(?=prints)"),"prints")
# [1] "/user/prints"
paste0(str_extract(d2, "(?<=%ABC)(.*)(?=prints)"),"prints")
# [1] "/prints"
答案 1 :(得分:2)
在基数R中,我们可以使用sub
提取"%ABC"
至"prints"
之后的所有内容。
sub(".*%ABC/(.*prints).*", "\\1", d1)
#[1] "user/prints"
sub(".*%ABC/(.*prints).*", "\\1", d2)
#[1] "prints"
答案 2 :(得分:1)
我们可以使用gsub
中的base R
gsub(".*ABC/|/\\w+/\\w+$", "", d1)
#[1] "user/prints"
gsub(".*ABC/|/\\w+/\\w+$", "", d2)
#[1] "prints"