REGEX:在一定数量的" /"之后删除字符串的中间部分

时间:2017-06-22 14:45:27

标签: r regex

如何使用正则表达式删除字符串的中间部分。我有以下网址: https://www.sec.gov/Archives/edgar/data/1347185/000134718517000016/0001347185-17-000016-index.htm/exh1025730032017.xml

但我希望它看起来像这样:

https://www.sec.gov/Archives/edgar/data/1347185/000134718517000016/exh1025730032017.xml

我可以在" data /../../"之后摆脱一切; 最后一长串数字不需要

我试过这个

    sub(sprintf("^((?:[^/]*;){8}).*"),"", URLxml)

但它什么都没做!求救!

2 个答案:

答案 0 :(得分:1)

要删除路径的最后一个子部分,可以使用

x <- "https://www.sec.gov/Archives/edgar/data/1347185/000134718517000016/0001347185-17-000016-index.htm/exh1025730032017.xml"
sub("^(.*/).*/(.*)", "\\1\\2", x)
## [1] "https://www.sec.gov/Archives/edgar/data/1347185/000134718517000016/exh1025730032017.xml"

请参阅online R demo,此处为regex demo

<强>详情:

  • ^ - 字符串的开头
  • (.*/) - 第1组(在替换字符串中称为\1)任何0 +字符,直到最后一个/
  • .*/ - 任意0个字符,直到最后/
  • (.*) - 第2组(从替换字符串引用\2反向引用)任何0 +字符到最后。

答案 1 :(得分:0)

a<-'https://www.sec.gov/Archives/edgar/data/1347185/000134718517000016/0001347185-17-000016-index.htm/exh1025730032017.xml'

gsub('data/(.+?)/(.+?)/(.+?)/','data/\\1/\\2/',a)

所以在网址:

data /.../.../ ..(已删除)../ ....