使用AWS Athena或PrestoDB正则函数提取URL指定分隔符后字符串
解决方法
实现逻辑
由于你需要匹配的分隔符包含多字符的%7C,直接写多分隔符匹配的正则复杂度较高,我们可以先做一次字符替换简化处理:
- 先将url中的所有
%7C替换为单字符分隔符& - 再用正则提取所有不属于
/、?、&的连续字符,即可得到你需要的结果
最终查询语句
SELECT regexp_extract_all(replace(url, '%7C', '&'), '[^/?&]+') FROM logs.url WHERE request_verb='GET' AND REGEXP_LIKE(url, 'https://api.abc.com:443/xyz/live/');
正则说明
[^/?&]+ 表示匹配长度至少为1、且不包含/、?、&三个分隔符的连续字符串,会自动跳过分隔符之间的空内容,输出结果和你给出的预期格式完全一致。
内容的提问来源于stack exchange,提问作者user3198755
相关产品推荐
相关产品推荐

