BigQuery - regex的正向前看的替代方法



我编写了一个RegEx模式,用于标识紧跟在数字字符后面的字母字符,目的是在BigQuery的REGEXP_EXTRACT函数中使用它。

模式如下:([A-Z]|[a-z])*(?=[0-9])

然而,由于BigQuery使用了RE2表达式库,所以正向向前看函数不起作用。识别数字字符而不包括在提取的字符串/匹配中的替代方法是什么?

用例:

提取英国邮政编码的前1或2个字母字符,例如

  • NW9 9KL
  • M1 0te
  • ph3 2ee
  • N10 10ke

可以使用

REGEXP_EXTRACT(col, '^[A-Za-z]+')

^[A-Za-z]+正则表达式匹配

  • ^-字符串
  • 起始
  • [A-Za-z]+-一个或多个字母。

同样,如果你必须检查首字母后面的数字,你可以使用

REGEXP_EXTRACT(col, '^([A-Za-z]+)[0-9]')

^([A-Za-z]+)[0-9]正则表达式匹配,捕获到组1的首字母,然后只匹配一个数字(与[0-9])。如果存在捕获组,则REGEXP_EXTRACT函数返回捕获的子字符串。

最新更新