亲爱的StackOverflow社区:)
我使用Google的BigQuery查询和分析AppEngine的日志。 尝试创建一个返回API调用者正在使用的所有JSON密钥的查询,因此我使用" regexp_extract"。
因此,如果API调用者发送了以下正文(在日志中打印原始请求的行):
{"Customers": [{"PhoneNumber": "0599984512"}],"ExpandAssets": true,"IncludeArchivedAssets": false,"TestRedeemConditions": true}
我想捕获所有JSON密钥,因此基本的Regex将是:
SELECT
regexp_extract(Log, r'"(\w+)":') as CallerFields,
FROM ...
最终上面的正则表达式匹配所有JSON密钥,但" CallerFields"现在只填充一个匹配(实际上是第一个,即"客户"), 虽然我想要" CallerFields"是一个字符串,其值看起来像这样:
Customers,PhoneNumber,ExpandAssets,IncludeArchivedAssets,TestRedeemConditions
由于我使用的是BigQuery,我有点受限,无法找到一种在循环中调用Regex的方法,这是我在很多地方找到的一个很好的解决方案其他问题 - 我的问题是,你如何在Regex中收集所有匹配并将其作为字符串返回? (Google BigQuery使用RE2 Regex引擎)
(当然 - 如果你想到一个更好的方式来实现我的目标,而不是捕获正则表达式中的所有匹配,请告诉我)
提前致谢!