[英]extracting the second last word between the special characters “/”
我想在'/'符号后面提取第二个最后一个字符串。 例如,
url<- c('https://example.com/names/ani/digitalcod-org','https://example.com/names/bmc/ambulancecod.org' )
df<- data.frame (url)
我想从两个中间的第二个单词中提取第二个单词//并希望得到“ani”和“bmc”这两个词
所以,我试过这个
library(stringr)
df$name<- word(df$url,-2)
我需要输出如下:
name
ani
bmc
您可以使用word
但需要指定分隔符,
library(stringr)
word(url, -2, sep = '/')
#[1] "ani" "bmc"
试试这个:
as.data.frame(sapply(str_extract_all(df$url,"\\w{2,}(?=\\/)"),"["))[3,]
# V1 V2
#3 ani bmc
as.data.frame(sapply(str_extract_all(df$url,"\\w{2,}(?=\\/)"),"["))[2:3,]
# V1 V2
#2 names names
#3 ani bmc
使用basename
非正则表达式方法
basename(mapply(sub, pattern = basename(url), replacement = "", x = url, fixed = TRUE))
#[1] "ani" "bmc"
basename(url)
“删除所有路径,包括最后一个路径分隔符(如果有)”并返回
[1] "digitalcod-org" "ambulancecod.org"
使用mapply
用""
替换url
每个元素的结果,并再次调用basename
。
使用gsub
.*?([^/]+)/[^/]+$
R
:
urls <- c('https://example.com/names/ani/digitalcod-org','https://example.com/names/bmc/ambulancecod.org' ) gsub(".*?([^/]+)/[^/]+$", "\\\\1", urls)
这产生了
[1] "ani" "bmc"
请参阅regex101.com上的演示 。
这是使用strsplit
的解决方案
words <- strsplit(url, '/')
L <- lengths(words)
vapply(seq_along(words), function (k) words[[k]][L[k]-1], character(1))
# [1] "ani" "bmc"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.