Snowflake 中的正则表达式 - 以字符串开头并以数字结尾

Kra*_*sky 3 regex snowflake-cloud-data-platform

我正在努力在雪花中编写正则表达式。

SELECT
 'DEM7BZB01-123' AS SKU,
 RLIKE('DEM7BZB01-123','^DEM.*\d\d$') AS regex
Run Code Online (Sandbox Code Playgroud)

我想找到所有以“DEM”开头并以两位数字结尾的字符串。不幸的是,我使用的表达式返回 FALSE。

在此输入图像描述

我在两个正则表达式生成器中检查了这个表达式,它起作用了。

Luk*_*rms 5

在雪花中,反斜杠字符\是转义字符。
参考:转义字符和注意事项

因此,您需要在正则表达式中使用 2 个反斜杠来表示 1。

SELECT
 'DEM7BZB01-123' AS SKU,
 RLIKE('DEM7BZB01-123', '^DEM.*\\d\\d$') AS regex
Run Code Online (Sandbox Code Playgroud)

或者您可以以不使用反斜杠的方式编写正则表达式模式。

例如,模式^DEM.*[0-9]{2}$与模式匹配相同^DEM.*\d\d$