Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在特殊字符之间提取最后一个单词/&引用;_R_Regex_Stringr_Stringi - Fatal编程技术网

R 在特殊字符之间提取最后一个单词/&引用;

R 在特殊字符之间提取最后一个单词/&引用;,r,regex,stringr,stringi,R,Regex,Stringr,Stringi,我想提取“/”符号后的最后一个字符串。比如说, url<- c('https://example.com/names/ani/digitalcod-org','https://example.com/names/bmc/ambulancecod.org' ) df<- data.frame (url) 试试这个: as.data.frame(sapply(str_extract_all(df$url,"\\w{2,}(?=\\/)"),"["))[3,] # V1 V2 #3

我想提取“/”符号后的最后一个字符串。比如说,

url<- c('https://example.com/names/ani/digitalcod-org','https://example.com/names/bmc/ambulancecod.org' )
df<- data.frame (url)
试试这个:

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

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

library(stringr)

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

gsub

.*?([^/]+)/[^/]+$

R
中:

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

请参阅。

这里有一个使用strsplit的解决方案

words <- strsplit(url, '/')
L <- lengths(words)
vapply(seq_along(words), function (k) words[[k]][L[k]-1], character(1))    
# [1] "ani" "bmc"

words应该有更有效的方法。我只是在继续你的思路
urls <- c('https://example.com/names/ani/digitalcod-org','https://example.com/names/bmc/ambulancecod.org' )
gsub(".*?([^/]+)/[^/]+$", "\\1", urls)
[1] "ani" "bmc"
words <- strsplit(url, '/')
L <- lengths(words)
vapply(seq_along(words), function (k) words[[k]][L[k]-1], character(1))    
# [1] "ani" "bmc"