繁体   English   中英

从字符串中提取匹配模式

[英]Extract matching patterns from a string

我的数据:

d1 <- "GET /api/dir/100%ABC/user/prints/abcd1111/file"
d2 <- "GET /api/dir/100%ABC/prints/efgh1111/file"

我想从我的数据中提取字符串: user/printsprints part。 我知道如何提取2个特定的字符串,如:

str_extract(d1, "(?<=/dir/)(.*)(?=%ABC)")

获得数字100

如何在%ABC/之后提取并以prints结束(包含prints ),这样我就可以得到: user/prints或从同一个脚本prints

不完全优雅,但这应该做:

paste0(str_extract(d1, "(?<=%ABC)(.*)(?=prints)"),"prints")
# [1] "/user/prints"
paste0(str_extract(d2, "(?<=%ABC)(.*)(?=prints)"),"prints")
# [1] "/prints"

在基数R中,我们可以使用sub来提取"%ABC"之后的所有内容,直到"prints"

sub(".*%ABC/(.*prints).*", "\\1", d1)
#[1] "user/prints"

sub(".*%ABC/(.*prints).*", "\\1", d2)
#[1] "prints"

我们可以使用base R gsub

gsub(".*ABC/|/\\w+/\\w+$", "", d1)
#[1] "user/prints"
gsub(".*ABC/|/\\w+/\\w+$", "", d2)
#[1] "prints"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM