2017-06-22 68 views
0

如何使用正則表達式刪除字符串的中間部分。我有以下網址: https://www.sec.gov/Archives/edgar/data/1347185/000134718517000016/0001347185-17-000016-index.htm/exh1025730032017.xmlREGEX:在一定數量的「/」後刪除字符串的中間部分

,但我希望它看起來像這樣:

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

我可以「數據/../../」 這最後後襬脫一切未啓用數字的一長串需要

我想這

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

但它確實nt做任何事情!請幫助!

+0

你如何定義URL的中間? – Sotos

+1

如果這只是您必須使用的許多url的一個示例,則需要了解每個示例中哪些更改以及哪些內容保持不變的更多信息。 –

+0

那麼,沒有什麼改變呃?每次都會一樣,路徑深度,http?根據你所說的話,沒有足夠的信息來回答。噢,但有1個答案我看... – sln

回答

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+字符到最後/
  • (.*) - Gr oup 2(從\2反向引用替換字符串)任何0+字符到最後。
0
a<-'https://www.sec.gov/Archives/edgar/data/1347185/000134718517000016/0001347185-17-000016-index.htm/exh1025730032017.xml' 

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

所以在網址:

數據/.../.../ ..(這被刪除)../ ....

相關問題