Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式SQL,发出转义引号_Regex_Postgresql_Amazon Redshift - Fatal编程技术网

Regex 正则表达式SQL,发出转义引号

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\”:\“[^”]*\”(

我试图使用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\”:\“[^”]*\”(:,)

演示:

第一个提取的组就是您想要的。

您的正则表达式不匹配,因为
\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');