【问题标题】:Need a regex for URL check?需要用于 URL 检查的正则表达式?
【发布时间】:2019-05-26 18:43:09
【问题描述】:

我需要一个 URL 字符串的正则表达式。

我的 URL 字符串敌人喜欢

https冒号//字符串点字符串/字符串(中间不包含任何空格)

【问题讨论】:

  • 为什么? Google BigQuery 支持URL Datatype,这使得检查某些内容是否为有效 URL 变得更加容易..
  • @Raymond Nijland 我计划对 twitter 数据和文本进行情感分析,我有这些 http 链接需要删除才能执行 NLP。

标签: sql regex google-bigquery gcloud


【解决方案1】:

来自https://gist.github.com/jacksonfdam/3000275 我发现:

^http(s)?:\/\/((\d+\.\d+\.\d+\.\d+)|(([\w-]+\.)+([a-z,A-Z][\w-]*)))(:[1-9][0-9]*)?(\/([\w-.\/:%+@&=]+[\w- .\/?:%+@&=]*)?)?(#(.*))?$/i

【讨论】:

    【解决方案2】:

    以下 BigQuery 标准 SQL 示例

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 'check this link http://www.example.com/products?id=1&page=2' tweet UNION ALL
      SELECT 'http://www.example.com/products?id=1&page=2 this link is awesome' tweet UNION ALL
      SELECT 'the link http://www.example.com/products?id=1&page=2 is awesome' tweet 
    
    )
    SELECT REGEXP_REPLACE(tweet, r"(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+", '') clean_tweet
    FROM `project.dataset.table`  
    

    结果

    Row clean_tweet  
    1   check this link  
    2   this link is awesome     
    3   the link is awesome  
    

    【讨论】:

    • 我想知道在运行正则表达式引擎之前使用使用 LIKE 或 CONTAINS 先搜索 http 和 https 的交付表是否会提高性能,因为您在可能的较小结果集上运行正则表达式引擎..也许 iám在这里考虑很多全文索引,我不确定 Google BigQuery 是否支持?
    • 你可以发布你的答案来实现这个想法——这样你会更清楚你的想法。同时,我觉得这个问题的重点是更多地检测 url - 那么它将如何嵌入到特定的用例中取决于 OP 或另一个问题的主题
    • 实话实说,我在 Google BigQuery 中的体验恰好是 0%非常渴望资源。
    • 你可以试试:o)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2011-12-19
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多