Jon*_*onk 3 regex google-bigquery
我可以请求您帮助构建一个在 Google Big Query 上使用的正则表达式,使用REGEXP_EXTRACT它来解析给定输入 url 的完整域吗?
解析条件:
\n\n//如果url 中第一次//出现后有 a ://如果字符串开头没有:?或第一个/或第一个之后&或直到字符串末尾(如果没有找到?,/或 )&一些例子:
\n\nhtp://www.google.com --> www.google.com\nhtp://www.google.com/item/ --> www.google.com\nhtp://www.google.com?source=google --> www.google.com\nhtp://www.google.com&source=google --> www.google.com\nwww.google.com --> www.google.com\nwww.google.com/item/ --> www.google.com\nwww.google.com?source=google --> www.google.com\nwww.google.com&source=google --> www.google.com\nhttp://google.com&source=google --> google.com\nhttps://www.example-code.com/vb/string.asp --> www.example-code.com\nRun Code Online (Sandbox Code Playgroud)\n\n我创建了这个正则表达式:
\n\nREGEXP_EXTRACT('google.it?medium=cpc?cobranded=google&keywor\xe2\x80\x8c\xe2\x80\x8bd=foo';, r'//([^/|^?|^&]+)')\nRun Code Online (Sandbox Code Playgroud)\n\n但它仅适用于包含 的网址//,我无法获得一个//在网址中没有的情况下也适用的正则表达式。
小智 6
BigQuery 提供以下三个功能:
HOST()——给定一个 URL,以字符串形式返回主机名。
DOMAIN()——给定一个 URL,以字符串形式返回域。
TLD()——给定 URL,返回顶级域以及 URL 中的任何国家/地区域。
小智 6
对于任何寻找使用标准 SQL 的解决方案的人来说,该HOST()函数现在位于NET以下命名空间下NET.HOST(url): https: //cloud.google.com/bigquery/docs/reference/standard-sql/net_functions#nethost
WITH
examples AS (
SELECT "https://some.domain.com/path?query=param#hash" AS example
UNION ALL
SELECT "some.domain.com/path?query=param#hash" AS example)
SELECT
NET.HOST(example)
FROM
examples
Run Code Online (Sandbox Code Playgroud)
返回:
some.domain.com
some.domain.com
Run Code Online (Sandbox Code Playgroud)