使用Redshift中的广告系列跟踪参数捕获网址时遇到问题

时间:2018-02-08 22:03:55

标签: regex posix amazon-redshift

我正在尝试将查询中包含跟踪参数的网址捕获到网站的主页。在某些情况下,参数可以在查询开始之前具有正斜杠。以下是两个应该匹配的示例:

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中编写正则表达式,因此我假设我在两者之间进行翻译时遇到了麻烦;非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

/符号不是特殊的正则表达式元字符,你不应该逃脱它。此外,为了避免转义.?的问题,您可以将它们放入括号表达式中:

WHERE t.url ~ '^https?://test[.]com[?]'

它将匹配:

  • ^ - 字符串开头
  • https?://test[.]com[?] - http://test.com?https://test.com?