使用regex和stringr提取URL的最后一部分
我正在执行数百个URL重定向,需要提取最后一个正斜杠后的所有文本,因此: /blog/2018/9/28/my_Article 1变为/my_Article 1 我想使用tidyverse的stringr软件包。我在这里看到了一个不适用于R的类似问题: 。。。并尝试了以下方法:使用regex和stringr提取URL的最后一部分,r,regex,tidyverse,stringr,R,Regex,Tidyverse,Stringr,我正在执行数百个URL重定向,需要提取最后一个正斜杠后的所有文本,因此: /blog/2018/9/28/my_Article 1变为/my_Article 1 我想使用tidyverse的stringr软件包。我在这里看到了一个不适用于R的类似问题: 。。。并尝试了以下方法: df %>% mutate(new.page = str_extract(old.page, "/[^\/]+$/")) 。。。但是得到错误: 错误:“\/”是无法识别的字符串转义/[^\/ 我试图删除转义
df %>%
mutate(new.page = str_extract(old.page, "/[^\/]+$/"))
。。。但是得到错误:
错误:“\/”是无法识别的字符串转义/[^\/
我试图删除转义的反斜杠,但没有效果
下面是一个dput reprex数据示例,其中old.page是我开始使用的原始URL,new.page是我想要访问的原始URL
structure(list(old.page = c("/blog/2018/9/28/my_article1", "/blog/2013/05/22/1735",
"/blog/2013/02/27/my-goals", "/blog/2013/01/23/leading-change",
"/blog/2013/11/19/2-blog-posts-in-1"), new.page = c("/my_article1",
"/1735", "/my-goals", "/leading-change", "/2-blog-posts-in-1"
)), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA,
-5L))
我们可以使用str_移除
我们可以使用str_移除
如果要避免使用正则表达式,可以使用basename。paste0是在新列中包含反斜杠的参数
df %>%
mutate(new.page = paste0("/", basename(old.page)))
还是用正则表达式
df %>%
mutate(new.page = gsub('.*\\/', "/", old.page))
如果要避免使用正则表达式,可以使用basename。paste0是在新列中包含反斜杠的参数
df %>%
mutate(new.page = paste0("/", basename(old.page)))
还是用正则表达式
df %>%
mutate(new.page = gsub('.*\\/', "/", old.page))
basename可能是一个简单的解决方案?basename可能是一个简单的解决方案?我不知道有一个函数像basename一样优雅。谢谢你也发布了正则表达式。我不知道有一个函数像basename一样优雅。谢谢你也发布了正则表达式。