4

我正在尝试形成一个正则表达式,REGEXP_SUBSTR (Redshift)它将从任何给定的 URL 中提取子域和域部分。

我尝试了来自 stackoverflow 的许多建议:regular-expression-extract-subdomain-domain、getting-parts-of-a-url-regex、how-to-get-domain-name-from-url 等。其中一些适用于正则表达式验证器,但不适用于 Redshift。

正则表达式应该处理带有和不带有 http/https 前缀的 URL。

有没有其他方法可以使用正则表达式从任何给定的 URL 中提取子域和域?

4

1 回答 1

4

经过大量的实验,这就是我使用的:

REPLACE(REGEXP_SUBSTR(url,'//[^/\\\,=@\\+]+\\.[^/:;,\\\\\(\\)]+'),'//','')

REPLACE由于 Redshift 支持非常基本的正则表达式,因此需要匹配双斜杠然后将其删除。

FWIW,您会注意到这与 Jeff Barr 在Redshift UDF 的介绍中提供的正则表达式非常不同- 正则表达式对我没有任何作用。

于 2016-04-26T13:04:40.090 回答