我正在尝试从R中的URLS中提取参数。参数的确切位置将发生变化,因此我需要以其他方式识别它。
以下是网址示例:
https://www.example.se/-Hotell.d178317.Reseguide-Hotell-SMP?destinationId=178317&kword=ZzZz.4650002325454
我想在d
之后提取数字 - 在此示例中为178317
。
目前我正在使用此功能sub(".d","",url)
,我无法弄清楚如何继续。有人可以建议如何在这个例子中使用这个功能吗?干杯!
答案 0 :(得分:1)
使用几个sub
s:
> url
[1] "https://www.example.se/-Hotell.d178317.Reseguide-Hotell-SMP?destinationId=178317&kword=ZzZz.4650002325454"
直到第一个".d"
:
> sub(".*?\\.d","",url)
[1] "178317.Reseguide-Hotell-SMP?destinationId=178317&kword=ZzZz.4650002325454"
>
用sub
包裹它,从第一个非数字开始切掉所有内容:
> sub("[^0-9].*","",sub(".*?\\.d","",url))
[1] "178317"
使用as.numeric
制作一个号码。
答案 1 :(得分:0)
我猜你真正想要的是在destinationId
之后提取任何东西,所以你可能会相处:
urls <- c("https://www.example.se/-Hotell.d178317.Reseguide-Hotell-SMP?destinationId=178317&kword=ZzZz.4650002325454")
gsub(".*?destinationId=(\\d+).*", "\\1", urls)
哪个收益
[1] "178317"
答案 2 :(得分:0)
使用正则表达式比@Spacedman更精细,将他的两个部分加上匹配,你可以将它限制为一次调用sub():
sub(".*\\.d([0-9]+)\\..*", "\\1", url)
正则表达式的作用:
“\\ 1”匹配括号中正则表达式中的位,现在用作sub的替换,因此作为输出。