RegEx匹配有效日期Presto



对于下表,我想从additional_info字符串中提取available from date。我知道Presto中有一个regexp_extract_all(字符串,模式(函数,但不太确定如何从字符串中提取日期。

FYI:

  • 日期总是采用相同的格式
  • additional_info列中只能有一个日期
  • additional_info列中没有日期的行在日期列中为null

表格

product_id   additional_info
325245       New, contact for more information, available from 01.01.2020
635255       Used, available from 06.11.2020
422632        New, contact for more information

期望输出表

product_id     available_date 
325245         01.01.2020
635255         06.11.2020
422632

如果你的日期总是这种格式,一个非常简单的解决方案可能是:

SELECT
product_id
, regexp_extract(additional_info, '(dd.dd.dddd)')
FROM table

它将返回捕获组(betweenbrackets)匹配的第一个子字符串。

正则表达式中的点表示任何字符。要在regexp中真正匹配点,您需要用反斜杠.屏蔽它

SELECT
product_id,
regexp_extract(additional_info, '(dd.dd.d{4})')
FROM table

如果要允许不同的分隔符,而不仅仅是点,请使用字符类[]。例如,点或短划线:

SELECT
product_id,
regexp_extract(additional_info, '(dd[.-]dd[.-]d{4})')
FROM table

相关内容

  • 没有找到相关文章

最新更新