Regex 正则表达式SQL,发出转义引号
我试图使用PSQL,特别是AWS红移来解析一行。样本数据如下Regex 正则表达式SQL,发出转义引号,regex,postgresql,amazon-redshift,Regex,Postgresql,Amazon Redshift,我试图使用PSQL,特别是AWS红移来解析一行。样本数据如下 {"c.1.mcc":"250","appId":"sx-calllog","b.level":59,"c.1.mnc":"01"} {"appId":"sx-voice-call","b.level":76,"foreground":9} 我尝试使用以下正则表达式来提取appId字段,但我的查询返回的是空字段 'appId\":\"[\w*]\",' 质疑 您可以按如下方式执行此操作: (\“appId\”:\“[^”]*\”(
{"c.1.mcc":"250","appId":"sx-calllog","b.level":59,"c.1.mnc":"01"}
{"appId":"sx-voice-call","b.level":76,"foreground":9}
我尝试使用以下正则表达式来提取appId字段,但我的查询返回的是空字段
'appId\":\"[\w*]\",'
质疑
您可以按如下方式执行此操作:
(\“appId\”:\“[^”]*\”(:,)
演示:
第一个提取的组就是您想要的。您的正则表达式不匹配,因为
\w
不匹配-
您可以尝试使用一些向前看和向后看来仅隔离appid引号内的文本。(?在此处添加此内容,尽管这是一个老问题,因为它可能有助于以后查看此内容
如果您的数据行是有效的json,则可以使用Redshift函数提取给定键的值。强调json是有效的,因为即使有一行无法解析,它也会失败,Redshift将抛出json解析错误
使用给定数据的示例:
select json_extract_path_text('{"c.1.mcc":"250","appId":"sx-calllog","b.level":59,"c.1.mnc":"01"}','appId');
返回sx调用日志
这尤其有用,因为红移不支持lookahead/lookahead(它是POSIX正则表达式)和提取组。我认为我不能使用红移选择提取组。但我现在有了“appId”:“blah”返回,所以这是一个很大的改进。
select json_extract_path_text('{"c.1.mcc":"250","appId":"sx-calllog","b.level":59,"c.1.mnc":"01"}','appId');