【问题标题】:Regex: Extract everything after forward slash in Google Bigquery?正则表达式:在 Google Bigquery 中提取正斜杠后的所有内容?
【发布时间】:2021-06-16 14:45:55
【问题描述】:

我有以下两种情况。我想提取search/ 之后或search/category/ 之间的所有内容

场景 1,我想要 search/ 之后的所有内容:

/listBuilder/20568284/search/1"X4"-8 t%26g

场景 2,我想要 search/ and category/ 之间的所有内容:

listBuilder/20464071/search/decking screws/category/6765

编辑和进一步澄清

假设我有一列包含以下信息

Column1
/listBuilder/20568284/search/1"X4"-8 t%26g
listBuilder/20464071/search/decking screws/category/6765

如何使用正则表达式从 column1 获取具有以下理想信息的新列

Column2 
1"X4"-8 t%26g
decking screws

【问题讨论】:

    标签: sql regex google-bigquery


    【解决方案1】:

    考虑下面

    select text, 
      regexp_extract(text, r'search/(.+)') as after_search,
      regexp_extract(text, r'search/(.+)category/') as between_search_and_category,
    from `project.dataset.table`     
    

    如果您需要处理/提取到一列 - 请在下面考虑

    select regexp_extract(text, r'search/(.+?)(?:/category|$)')  
    from `project.dataset.table`     
    

    如果应用于您问题中的样本数据 - 输出是

    【讨论】:

    • 非常感谢这应该可以工作,但是这两个字符串都在一个列中。是否有任何逻辑可以在一行代码中完成?
    • 不确定您的意思 - 发布新问题并提供详细信息,我们将很乐意回答:o)
    • 我可能会编辑当前问题,因为我不确定如何正确地改写问题,而不会堆栈说我的问题与另一个问题的措辞相似
    • 更新了当前问题,非常感谢
    • 进行编辑后,您只需将@MikhailBerlyant 答案中的两个 regex_extract 替换为带有 regex_extract(text, , r'search\/(.+)(?:category\/|$) 的组合 regex_extract ')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2011-03-09
    相关资源
    最近更新 更多