df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

正则提取

中等 07-string 字符串 stringregexextract

从工单备注 note 里提取订单编号 order_no。

订单编号的格式是:大写的 ORD- 后面跟恰好 5 位数字(0–9),并且编号作为一个完整的“词”出现——编号的前一个字符和后一个字符都不能是字母、数字或下划线(可以是空格、标点、字符串开头或结尾)。

  • 一条备注里有多个编号时,取最靠前的那个。
  • 没有符合条件的编号时,order_no 为 null(不是空字符串)。
  • note 为 null 时,order_no 为 null。
  • 大小写敏感:ord-12345 不算。

例如:ORD-123456(6 位)、XORD-11111(前面紧挨字母)、ORD-12345ORD-54321(后面紧挨字母)都不算;(ORD-31415)、ORD-77777-B 里的编号算。

输入

  • tickets(id, note)

输出

列为 id, order_no,每张工单一行,行顺序不限。

输入表 (case base,共 2 个 case:base、edge)

tickets local/base/tickets
#idint64notestring
1 1 Customer asks about ORD-10234 delivery
2 2 Refund for ORD-20001, ORD-20002 pending
3 3 no order mentioned
4 4 ORD-99999
5 5 wrong item (ORD-31415), please swap
6 6 call back tomorrow
共 6 行

期望输出 (case base,行顺序不限)

#idInt64order_noString
1 1 ORD-10234
2 2 ORD-20001
3 3 null
4 4 ORD-99999
5 5 ORD-31415
6 6 null
共 6 行