我正在尝试将查询中包含跟踪参数的网址捕获到网站的主页。在某些情况下,参数可以在查询开始之前具有正斜杠。以下是两个应该匹配的示例:
https://test.com/?utm_campaign=email
https://test.com?utm_campaign=email
以下是两个不匹配的示例:
https://test.com/blog
https://test.com/blog?utm_campaign=email
以下是一个示例查询:
SELECT t.url,COUNT(t.id) AS pageviews
FROM db.table AS t
WHERE t.url ~ '^https*:\\/\\/test\\.com\\?'
GROUP BY 1
ORDER BY 2 DESC
请注意,Redshift文档说明:
搜索包含元字符的字符串,例如'。 * | ? “, 依此类推,使用两个反斜杠('\\')
来转义角色
我尝试了单斜杠和双斜杠。单斜杠返回比我预期的要多得多,而双斜杠不会返回任何结果。我更习惯于在Javascript中编写正则表达式,因此我假设我在两者之间进行翻译时遇到了麻烦;非常感谢任何帮助。
答案 0 :(得分:1)
/
符号不是特殊的正则表达式元字符,你不应该逃脱它。此外,为了避免转义.
或?
的问题,您可以将它们放入括号表达式中:
WHERE t.url ~ '^https?://test[.]com[?]'
它将匹配:
^
- 字符串开头https?://test[.]com[?]
- http://test.com?
或https://test.com?
。