如何使用RegEx重定向url的一部分?



我有一个列与谷歌自定义搜索结果列表重定向URL。我想从这个组合URL中提取外部域。

例子:

  1. https://www.google.com/url?client=internal-element-cse&cx=3c360356&q=https://examplesite1.co.uk/aa-vv--cc-dd-gggg-/&sa=U&ved=2ahUKEwjj1cvJ79PuAhXBHc0KHRgvBLsgQIAhAC&usg=AOvVaw2vIHUiy31YKWs5c41Q

  2. https://www.google.com/url?client=internal-element-cse&cx=3c360356&q=http://www.exmaplesite2.co.uk/wp-content/uploads/2016/12/research-paper.pdf&sa=U&ved=2ahUKEwiphLKMi80KHcLUCMAQFjAFegQIARAC&usg=AOvVawkm-bXjmxsPxLQ9w3

  3. https://www.google.com/url?client=internal-element-cse&cx=3c360356&q=https://examplesite-3.com/home/en/aaa-bbb/38376&sa=U&ved=2ahUKEwixq4K7qttXEKHTOEClsQFjAAegQIARAB&usg=AOvVaw2ouHhfNNTPV

从上面的URL中,我想提取外部域名

以上示例的结果:

  1. www.site2.co.uk
  2. www.exmaplesite2.co.uk
  3. examplesite-3.com

我能够做到这一点在谷歌工作表,但需要RedEx,以便我可以在谷歌数据工作室使用它。

谢谢。

将两个正则表达式合并:

(?:(?<=&q=https://)|(?<=&q=http://))(.*?)(?=/.*?&)

演示,解释

您可以将此正则表达式与额外的反向查看一起使用:

(?<=(?<!^https)://)[^/]+

RegEx演示

RegEx细节:

  • (?<=(?<!^https)://):正向后视,确认://在当前位置之前。另外,(?<!^https)后面嵌套的负面查找断言我们没有在://之前启动https,因此跳过匹配起始url
  • [^/]+: Match 1+ of any character that is not/'

更新:根据下面的评论,在Google Data Studio中不支持向后看,因此我们可以使用这个正则表达式:

.https?://([^/]+)

从捕获组#1中获取域名。

.放在https?:之前将确保我们不会在行首匹配URL。

最新更新