如何使用正则表达式删除字符串的中间部分。我有以下网址: 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)
但它什么都没做!求救!
答案 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 /.../.../ ..(已删除)../ ....