Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
SQL中的正则表达式匹配3个世界货币代码,但不匹配货币代码后的数字_Sql_Regex_Presto - Fatal编程技术网

SQL中的正则表达式匹配3个世界货币代码,但不匹配货币代码后的数字

SQL中的正则表达式匹配3个世界货币代码,但不匹配货币代码后的数字,sql,regex,presto,Sql,Regex,Presto,我正试图从字符串中提取货币代码 字符串如下所示: 品牌运动装|鞋类|鞋类|鞋类|鞋类|鞋类| 12787274 12487274 1246989 12487233 | 276.94欧元 最后是货币 如果我使用 '\\\[A-Z]{3}[1-9]' 我可以在最后得到货币,但这是输出: |EUR2 我怎样才能在最后只提取货币代码 对我来说,放这样的东西是不现实的 'USD|EUR|JPY' 因为我有很多货币通过。环顾四周 Presto允许使用lookahead,因此您可以使用以下选项: reg

我正试图从字符串中提取货币代码

字符串如下所示:
品牌运动装|鞋类|鞋类|鞋类|鞋类|鞋类| 12787274 12487274 1246989 12487233 | 276.94欧元
最后是货币

如果我使用
'\\\[A-Z]{3}[1-9]'
我可以在最后得到货币,但这是输出:

|EUR2
我怎样才能在最后只提取货币代码

对我来说,放这样的东西是不现实的

'USD|EUR|JPY'
因为我有很多货币通过。

环顾四周 Presto允许使用lookahead,因此您可以使用以下选项:

regexp_extract(string, '\|[A-Z]{3}(?=[1-9])')
substr(regexp_extract(string, '\|A-Z{3}[1-9]'), 2, 3)
但是,这不会移除管道
|

我认为普雷斯托目前不允许落后


捕获组 另一种选择是使用捕获组:

regexp_extract(string, '\|(A-Z{3})[1-9]', 1)

子串 或者,您可以使用以下命令对现有正则表达式进行子串:

regexp_extract(string, '\|[A-Z]{3}(?=[1-9])')
substr(regexp_extract(string, '\|A-Z{3}[1-9]'), 2, 3)

我相信普雷斯托可以让你看起来很帅,但不是很积极。试试
\\\\[A-Z]{3}(?=[1-9])
或者只是子串它。谢谢@ctwheels,我仍然在获得货币代码之前的管道。那么|欧元而不仅仅是欧元那么使用
substr(string,2,3)
怎么样?这很有效,谢谢!我更新了我的答案,你们可以使用捕获组,可能是最好的方法