如何从 R 中的 URL 路径中提取文本?

How do I extract text from a URL path in R?

我有一个数据框,其中有一列的条目格式为:

/textIwant
/textIwant/otherstuff
/

我想创建一个提取 "textIwant" 的新列。我应该使用 strsplit 还是正则表达式?

我们可以使用str_extract来提取一个或多个不是/

的字符
library(stringr)
str_extract(str1,  "[^/]+")
#[1] "textIwant"   "textIwant"   "abc-def-ghi" "abc-def-ghi"

或使用 base R 中的 sub 来匹配不是 / 的字符,将其捕获为一个组 (([^/]+)) 并替换为反向引用 ( \1)

sub("^.([^/]+).*", "\1", str1)
#[1] "textIwant"   "textIwant"   "abc-def-ghi" "abc-def-ghi"

数据

str1 <- c("/textIwant", "/textIwant/otherstuff", "/abc-def-ghi/", "/abc-def-ghi")

确实可以使用 strsplit() 拆分 /

sapply(strsplit(str1, "/"), "[", 2)
# "textIwant"   "textIwant"   "abc-def-ghi" "abc-def-ghi"

我会用

basename(str1)
[1] "textIwant"   "otherstuff"  "abc-def-ghi" "abc-def-ghi"

其中 str1 来自 akrun 的示例:

str1 <- c("/textIwant", "/textIwant/otherstuff", "/abc-def-ghi/", "/abc-def-ghi")