Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
使用regex和stringr提取URL的最后一部分_R_Regex_Tidyverse_Stringr - Fatal编程技术网

使用regex和stringr提取URL的最后一部分

使用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, "/[^\/]+$/")) 。。。但是得到错误: 错误:“\/”是无法识别的字符串转义/[^\/ 我试图删除转义

我正在执行数百个URL重定向,需要提取最后一个正斜杠后的所有文本,因此:

/blog/2018/9/28/my_Article 1变为/my_Article 1

我想使用tidyverse的stringr软件包。我在这里看到了一个不适用于R的类似问题:

。。。并尝试了以下方法:

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一样优雅。谢谢你也发布了正则表达式。