雪花正则表达式提取数据

时间:2021-03-26 19:53:25

标签: regex snowflake-cloud-data-platform

我正在尝试使用雪花 regexp_replace 从字符串中提取数据

这是我的字符串

我只想要日期值,在本例中它应该是 20210101

我知道如何使用 (?<=DATE_ID=)(.*)(?=/) 从正常的正则表达式中提取它,但很明显,snowflake 无法识别问号:

Status: ERROR
(SQLSTATE: 2201B, SQLCODE: 100048): Invalid regular expression: '(?<=DATE_ID=)(.*)(?=/)', no argument for repetition operator: ?

有谁知道如何在雪花中做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以将模式与捕获组一起使用:

pubspec.yaml

参见regex demo

详情

  • dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.0 hello: path:../hello/ - 匹配和消费的文本
  • SELECT REGEXP_SUBSTR(col, 'DATE_ID=([^/]*)', 1, 1, 'e', 1) SELECT REGEXP_SUBSTR(col, 'DATE_ID=([^/]*)', 1, 1, 'e') - 除捕获到组 1 中的 DATE_ID= 字符之外的任何零个或多个字符。

模式后面的前两个 ([^/]*) 参数是位置和出现参数,/ 告诉引擎返回第一个捕获组的内容。因此,您可以保留最后一个 1 参数(组号),也可以省略它。

在文档中查看有关 REGEXP_SUBSTR 的更多信息。