我试图使用BigQuery的全函数来解析表单操作符: query的“搜索查询”。查询字符串中可以有多个运算符/查询对,属于运算符之下的“子查询”可以有多个由parens包围的单词。我只想使用正则表达式从查询字符串中提取“搜索运算符”。
例如:
有什么建议吗?我绝对是个大白鲨,到目前为止我做的最好的就是
REGEXP_EXTRACT_ALL(query, "(.\*):") AS operator
它递归地扩展了所有在冒号之前看到的文本(给出了像“日期”、“日期:(7月31日)天气”这样的结果)。
我想要实现的最后一个“高级”功能是,如果搜索运算符完全由文本组成,则只包括它们。例如:
时间: 2020-07-08T17:09:14.043Z ->“时间”
谢谢!
发布于 2021-01-23 00:49:54
使用
regexp_extract_all(query, r'\b([a-zA-Z]+):') AS operator
见证明。
解释
--------------------------------------------------------------------------------
\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
--------------------------------------------------------------------------------
: ':'
发布于 2021-01-22 23:45:43
试着在下面
regexp_extract_all(query, r'([^: ]+):') AS operator
如果要应用于问题输出中的样本数据,则如下所示
https://stackoverflow.com/questions/65854075
复制相似问题