[英]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/prints
或prints
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.