【问题标题】:REGEXP_EXTRACT_ALL extract "search operators" in a queryREGEXP_EXTRACT_ALL 在查询中提取“搜索运算符”
【发布时间】:2021-01-22 23:21:53
【问题描述】:

我正在尝试使用 BigQuery 的 REGEXP_EXTRACT_ALL 函数来解析 operator: query 形式的“搜索查询”。查询字符串中可以有多个运算符/查询对,并且属于运算符的“子查询”可以有多个用括号括起来的单词。我想使用正则表达式从查询字符串中只提取“搜索运算符”。

例如:

  • 动物:猫 -> [“动物”]
  • 动物:(山狮) -> [“动物”]
  • 月份:二月日:星期日 -> ["month", "day"]
  • 日期:(7 月 31 日)天气:(蓝天) -> [“日期”,“天气”]

有什么建议吗?我绝对是一个正则表达式菜鸟,到目前为止我做得最好的是

REGEXP_EXTRACT_ALL(query, "(.\*):") AS operator

它递归地扩展了冒号之前看到的所有文本(给我类似 ["date", "date: (july 31) weather"] 的结果)。

我想实现的最后一个“高级”功能是仅包含完全由文本组成的搜索运算符。例如:
时间:2020-07-08T17:09:14.043Z -> ["time"]

谢谢!

【问题讨论】:

    标签: sql regex google-bigquery


    【解决方案1】:

    试试下面

    regexp_extract_all(query, r'([^: ]+):') AS operator    
    

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

    【讨论】:

      【解决方案2】:

      使用

      regexp_extract_all(query, r'\b([a-zA-Z]+):') AS operator
      

      proof

      说明

      --------------------------------------------------------------------------------
        \b                       the boundary between a word char (\w) and
                                 something that is not a word char
      --------------------------------------------------------------------------------
        (                        group and capture to \1:
      --------------------------------------------------------------------------------
          [a-zA-Z]+                any character of: 'a' to 'z', 'A' to 'Z'
                                   (1 or more times (matching the most
                                   amount possible))
      --------------------------------------------------------------------------------
        )                        end of \1
      --------------------------------------------------------------------------------
        :                        ':'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 1970-01-01
        • 2010-10-25
        • 2011-10-10
        相关资源
        最近更新 更多