谷歌出站链接转发模式的正则表达式

时间:2016-04-08 15:53:40

标签: regex url

我试图从谷歌出站转发链接中过滤掉一些导出的谷歌文档。任何作为链接插入到文档中的网址都会通过

重定向
https://www.google.com/url?q=

附加了该网址的其他讨厌的跟踪功能

&sa=D&ust=1460132191131000&usg=AFQjCNHtElMgAbdJQw__--jthRvFeSsWtQ

因此,完整的网址将如下所示:

https://www.google.com/url?q=http://www.url.com/folder/&sa=D&ust=1460132191131000&usg=AFQjCNHtElMgAbdJQw__--jthRvFeSsWtQ

找出正则表达式来过滤这些,只留下实际的url部分,不幸的是超出了我的意思。

1 个答案:

答案 0 :(得分:2)

简单方法

如果您的网址 完全如问题所示 httpsgoogle.cometc.),请使用以下网址正则表达式:

https:\/\/www\.google\.com\/url\?q=([^&]*)

数据将存储在 1st捕获组 - Live Demo on Regex101

您也可以删除括号,并使用\K重置RegEx,然后URL将是整个匹配(不需要捕获组):

https:\/\/www\.google\.com\/url\?q=\K[^&]*

Live Demo on Regex101

更安全的方法

如果您的RegEx与展示完全不同(可能是httpgoogle.co.uketc.),请尝试使用此版本,这样更安全:

^(https?:\/\/)?(www\.)?google(\.\w{1,3})+\/url\?(.*?)q=([^&]*)

该网址将存储在 5th捕获群组 - Live Demo on Regex101

工作原理:

^          # String starts with ...
(          # http(s)://
  http       # http
  s?         # Optional s (for https)
  :\/\/      # ://
)?         # HTTP(S) Protocol is optional (for just www.google....)
(www\.)?   # Optional www. (for just http://google....)
google     # google
(          # TLD(s) - .com, .co.uk, .com.vn
  \.         # .
  \w{1,3}    # TLD between 1 and 3 letters
)+         # Multiple TLDs
\/url      # /url
\?         # ?
(.*?)      # Optional other params before q=
q=         # q=
(          # Capture URL
  [^&]*      # Any character until an & sign. repeated as many times as possible
)

或者,使用\K和非捕获组 - (?:...)

^(?:https?:\/\/)?(?:www\.)?google(?:\.\w{1,3})+\/url\?(?:.*?)q=\K([^&]*)

Live Demo on Regex101

对于 Notepad ++ 中的查找和替换,请使用更安全的RegEx(带捕获组),最后使用.*

^(https?:\/\/)?(www\.)?google(\.\w{1,3})+\/url\?(.*?)q=([^&]*).*

并替换为$55th捕获组)。

像这样设置查找和替换(确保. 匹配换行符):

Find and Replace Settings

然后按全部替换。它将取代所有比赛。

或者,使用查找下一个替换按钮分别循环显示它们:

Using *Find Next* and *Replace* button to Find and Replace each match individually