【问题标题】:Regex to extract only domain and subdomain for urls正则表达式仅提取 url 的域和子域
【发布时间】:2019-09-05 08:04:34
【问题描述】:

我需要从 URl 中提取 2 个域。例如,网站名称为 domain.domain2.com -> domain.domain2.com;但是 m.domain.domain2.com -> domain.domain2.com;还有 domain.domain2.com/london -> domain.domain2.com。

我写了一个表达式^.+[\\./]([^\\.]+\\.[^\\.]+)$,但它总是返回 domain2.com。

我应该添加什么来获得想要的结果?

【问题讨论】:

  • 要修复它,您必须了解正则表达式的作用。你?你想和它匹配什么样的字符串(pattern)?你的例子不是很有帮助。
  • 我想提取包含 '.com' 的东西和 2(仅!)在 '.com' 域名旁边用点分隔的字符串。
  • 喜欢([^.]+)\.([^.]+2)\.com(?=\/|$)?见regex101.com/r/t0EjI9/1

标签: regex url google-bigquery


【解决方案1】:

我想提取包含 '.com' 事物和 2(仅!)在 '.com' 域名旁边的字符串,以点分隔

以下 BigQuery 标准 SQL 示例

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'domain.domain2.com' url UNION ALL
  SELECT 'm.domain.domain2.com' UNION ALL
  SELECT 'domain.domain2.com/london' 
)
SELECT *, 
  REGEXP_EXTRACT(url, r'([^.]+.[^.]+2.com)(?:/|$)') domain_and_subdomain
FROM `project.dataset.table`

有输出

Row url                         domain_and_subdomain     
1   domain.domain2.com          domain.domain2.com   
2   m.domain.domain2.com        domain.domain2.com   
3   domain.domain2.com/london   domain.domain2.com  

【讨论】:

    【解决方案2】:

    请使用NET functions

    选择 NET.HOST('http://m.domain.domain2.com/london')

    返回:

    m.domain.domain2.com

    【讨论】:

    • 但我想要 m.domain.domain2.com -> domain.domain2.com
    • 去掉“m”的逻辑是什么?
    • 对 m.domain.domain2.com 和 domain.domain2.com 进行分组
    猜你喜欢
    • 2014-10-31
    • 2016-04-21
    • 1970-01-01
    • 2015-09-27
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多