提取特殊字符“ /”之间的倒数第二个单词

时间:2019-01-31 13:42:45

标签: r regex stringr stringi

我想提取'/'符号后的倒数第二个字符串。例如,

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 

5 个答案:

答案 0 :(得分:4)

您可以使用word,但需要指定分隔符

library(stringr)

word(url, -2, sep = '/')
#[1] "ani" "bmc"

答案 1 :(得分:1)

尝试一下:

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

答案 2 :(得分:0)

使用basename

的非正则表达式方法
basename(mapply(sub, pattern = basename(url), replacement = "", x = url, fixed = TRUE))
#[1] "ani" "bmc"

basename(url)“删除所有路径,直到最后一个路径分隔符,包括最后一个路径分隔符(如果有)”,并返回

[1] "digitalcod-org"   "ambulancecod.org"

使用mapplyurl中每个元素的结果替换为"",然后再次调用basename

答案 3 :(得分:0)

gsub

一起使用
.*?([^/]+)/[^/]+$


R中:

urls <- c('https://example.com/names/ani/digitalcod-org','https://example.com/names/bmc/ambulancecod.org' )
gsub(".*?([^/]+)/[^/]+$", "\\1", urls)

这产生

[1] "ani" "bmc"

请参见a demo on regex101.com

答案 4 :(得分:0)

这是使用HttpURLConnection

的解决方案
strsplit