You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BigQuery中使用正则匹配特定格式员工ID的问题求助

修正BigQuery正则提取逻辑

问题核心

原正则\d{2}[A-Za-z]{2}\d{3}会匹配字符串内任意位置的符合格式片段,导致误提取长连续字符串中的子片段(比如EA2654CE19011591P5里的54CE190)。需要限定匹配目标为独立分隔的片段——即前后被非字母/数字/下划线的符号(空格、括号、连字符、下划线等)包围,或处于字符串首尾。

修正后的SQL代码

SELECT distinct
    Emp_no,
    REGEXP_EXTRACT(Emp_no, r"(?<!\w)\d{2}[A-Za-z]{2}\d{3}(?!\w)") AS emp_id
FROM
    `table`
where 
    Emp_no IN (
        'CUSPO1234(-99SM901_6',
        '3500974_14HB502',
        '13982666_16TG254-CONV',
        'EA2654CE19011591P5 - 13AH548 - ASC',
        '308697FR700259 ( 15AE411 - BMA '
    )

正则规则说明

  • (?<!\w):反向预查,确保匹配位置前的字符不是字母、数字或下划线(即目标片段前是分隔符或字符串开头)
  • \d{2}[A-Za-z]{2}\d{3}:目标格式,2位数字+2位大小写字母+3位数字
  • (?!\w):正向预查,确保匹配位置后的字符不是字母、数字或下划线(即目标片段后是分隔符或字符串结尾)

验证结果

执行后将得到期望输出:

Emp_noemp_id
CUSPO1234(-99SM901_699SM901
EA2654CE19011591P5 - 13AH548 - ASC13AH548
3500974_14HB50214HB502
13982666_16TG254-CONV16TG254
308697FR700259 ( 15AE411 - BMA15AE411

内容的提问来源于stack exchange,提问作者Sara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:22:18