我试图从谷歌出站转发链接中过滤掉一些导出的谷歌文档。任何作为链接插入到文档中的网址都会通过
重定向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部分,不幸的是超出了我的意思。
答案 0 :(得分:2)
如果您的网址 完全如问题所示 (https
,google.com
,etc.
),请使用以下网址正则表达式:
https:\/\/www\.google\.com\/url\?q=([^&]*)
数据将存储在 1st
捕获组 - Live Demo on Regex101
您也可以删除括号,并使用\K
重置RegEx,然后URL将是整个匹配(不需要捕获组):
https:\/\/www\.google\.com\/url\?q=\K[^&]*
如果您的RegEx与展示完全不同(可能是http
,google.co.uk
,etc.
),请尝试使用此版本,这样更安全:
^(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([^&]*)
对于 Notepad ++ 中的查找和替换,请使用更安全的RegEx(带捕获组),最后使用.*
:
^(https?:\/\/)?(www\.)?google(\.\w{1,3})+\/url\?(.*?)q=([^&]*).*
并替换为$5
(5th
捕获组)。
像这样设置查找和替换(确保.
不匹配换行符):
然后按全部替换。它将取代所有比赛。
或者,使用查找下一个和替换按钮分别循环显示它们: