BigQuery - RegExes 的 Positive Lookahead 的替代方法
BigQuery - Alternative method to Positive Lookahead for RegExes
我编写了一个 RegEx 模式,用于识别紧跟数字字符的字母字符,目的是将其用于 BigQuery 的 REGEXP_EXTRACT
函数。
模式如下:([A-Z]|[a-z])*(?=[0-9])
但是,由于BigQuery使用RE2表达式库,Positive Lookahead功能不起作用。识别数字字符而不将其包含在提取的 string/match 中的替代方法是什么?
用例:
提取英国邮政编码的前 1 或 2 个字母字符,例如
NW
9KL
M
1 0TE
ph
3 2ee
N
10 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
函数 returns 如果有捕获组则捕获子串。
我编写了一个 RegEx 模式,用于识别紧跟数字字符的字母字符,目的是将其用于 BigQuery 的 REGEXP_EXTRACT
函数。
模式如下:([A-Z]|[a-z])*(?=[0-9])
但是,由于BigQuery使用RE2表达式库,Positive Lookahead功能不起作用。识别数字字符而不将其包含在提取的 string/match 中的替代方法是什么?
用例:
提取英国邮政编码的前 1 或 2 个字母字符,例如
NW
9KLM
1 0TEph
3 2eeN
10 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
函数 returns 如果有捕获组则捕获子串。