首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >REGEXP_EXTRACT_ALL在查询中提取“搜索运算符”

REGEXP_EXTRACT_ALL在查询中提取“搜索运算符”
EN

Stack Overflow用户
提问于 2021-01-22 23:21:53
回答 2查看 1.1K关注 0票数 2

我试图使用BigQuery的函数来解析表单操作符: query的“搜索查询”。查询字符串中可以有多个运算符/查询对,属于运算符之下的“子查询”可以有多个由parens包围的单词。我只想使用正则表达式从查询字符串中提取“搜索运算符”。

例如:

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

有什么建议吗?我绝对是个大白鲨,到目前为止我做的最好的就是

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

它递归地扩展了所有在冒号之前看到的文本(给出了像“日期”、“日期:(7月31日)天气”这样的结果)。

我想要实现的最后一个“高级”功能是,如果搜索运算符完全由文本组成,则只包括它们。例如:

时间: 2020-07-08T17:09:14.043Z ->“时间”

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-23 00:49:54

使用

代码语言:javascript
运行
复制
regexp_extract_all(query, r'\b([a-zA-Z]+):') AS operator

证明

解释

代码语言:javascript
运行
复制
--------------------------------------------------------------------------------
  \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
--------------------------------------------------------------------------------
  :                        ':'
票数 2
EN

Stack Overflow用户

发布于 2021-01-22 23:45:43

试着在下面

代码语言:javascript
运行
复制
regexp_extract_all(query, r'([^: ]+):') AS operator    

如果要应用于问题输出中的样本数据,则如下所示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65854075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档