从R中的一批URLS中提取参数

问题描述 投票:-1回答:3

我正在尝试从R中的URLS中提取参数。参数的确切位置将发生变化,因此我需要以其他方式识别它。

以下是URL的示例:

https://www.example.se/-Hotell.d178317.Reseguide-Hotell-SMP?destinationId=178317&kword=ZzZz.4650002325454

我想在d之后提取数字 - 在这个例子中178317

目前我正在使用这个功能qazxsw poi,我无法弄清楚如何继续。有人可以建议如何在这个例子中使用这个功能吗?干杯!

r regex substr
3个回答
1
投票

使用几个sub(".d","",url)s:

sub

直到第一个> 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" 来制作一个数字。


0
投票

我想你真正想要的是在as.numeric之后提取任何东西,所以你可能会相处:

destinationId

哪个收益率

urls <- c("https://www.example.se/-Hotell.d178317.Reseguide-Hotell-SMP?destinationId=178317&kword=ZzZz.4650002325454")
gsub(".*?destinationId=(\\d+).*", "\\1", urls)

0
投票

使用正则表达式比@Spacedman使用的更复杂一点,结合他的两个部分加上匹配,你可以将它限制为一个sub()调用:

[1] "178317"

正则表达式的作用:

  • 。*匹配任何字符(。)零次或多次(*)
  • \\。匹配一个点(实际字符,不是元字符; \\转义元字符)后跟一个d
  • ([0-9] +)包含从0到9([0-9])的数字至少一次(+);括号使此部分可用于匹配
  • \\。又一个点
  • 。*再次跟随任何角色

“\\ 1”匹配括号中正则表达式中的位,现在用作sub的替换,因此作为输出给出。

© www.soinside.com 2019 - 2024. All rights reserved.