如何使用 RegEx 获取部分重定向 url?

How to use RegEx to get part of redirect url?

我在 Google 自定义搜索结果中有一个包含列表重定向 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

我可以在 Google Sheet 中执行此操作,但需要 RedEx 以便我可以在 Google Data Studio 中使用它。

谢谢。

只需组合两个正则表达式:

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

Demo & explanation

您可以将此正则表达式与额外的负向回顾一起使用:

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

RegEx Demo

正则表达式详细信息:

  • (?<=(?<!^https)://):正面回溯断言我们在当前位置之前有 ://。此外,嵌套的负后视 (?<!^https) 断言我们在 :// 之前没有开始 https 从而跳过匹配开始 URLs
  • [^/]+: Match 1+ of any character that is not /`

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

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

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

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