我想在R中进行以下提取。
我有一个列有这样的链接 http://www.imdb.com/title/tt2569314/companycredits
我想从中提取tt2569314并将其存储在新列中。
我想要这样做的方式是,比较一下,如果第一个' /'在起始位置后找到。
我希望在SQL中将它作为SUBSTR和INSTR的混合物。
请告知。
答案 0 :(得分:2)
你可以试试这个:
a<-"http://www.imdb.com/title/tt2569314/companycredits"
sub("http://www.imdb.com/.+/(.+)/.+","\\1" ,a)
#[1] "tt2569314"
答案 1 :(得分:2)
如果路径结构中的所有链接都相似,则可以使用dirname
x <- "http://www.imdb.com/title/tt2569314/companycredits"
sub("(.*)[/]", "", dirname(x))
# [1] "tt2569314"
或者您可以将正则表达式与基本网址
粘贴在一起y <- "http://www.imdb.com"
sub(paste0(y, "[/](.*)[/](.*)[/](.*)"), "\\2", x)
# [1] "tt2569314"
或者你甚至可以逃脱这个:
basename(dirname(x))
# [1] "tt2569314"
如果你使用子字符串,那就更有意义了。但是stringr
有一些有用的功能。
library(stringr)
s1 <- str_locate_all(x, "[/]")[[1]]
s2 <- str_locate(x, "http://www.imdb.com/title")
m <- match(s2[,2]+1, s1[,1])
substr(x, s1[m,1]+1, s1[m+1,1]-1)
# [1] "tt2569314"
答案 2 :(得分:1)
你可以尝试:
str1 <- "http://www.imdb.com/title/tt2569314/companycredits"
library(httr)
gsub("^[^/]*\\/|\\/[^/]*", "", parse_url(str1)$path)
#[1] "tt2569314"
答案 3 :(得分:0)
你也可以试试这个,
> x <- "http://www.imdb.com/title/tt2569314/companycredits"
> m <- regexpr("^http://www.imdb.com/[^/]*/\\K[^/]+", x, perl=TRUE)
> regmatches(x, m)
[1] "tt2569314"