正则表达式(RE2) - 返回所有匹配项的字符串,而不仅仅是一个匹配项

时间:2017-04-25 09:16:30

标签: regex

亲爱的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引擎)

(当然 - 如果你想到一个更好的方式来实现我的目标,而不是捕获正则表达式中的所有匹配,请告诉我)

提前致谢!

0 个答案:

没有答案