特殊角色的BigQuery Regex



以下是带有特殊字符的长字符串"»"的示例代码。我需要在第一个和第三个特殊字符(»(之前拉出字符串。

    with test as (
    select 'AA»BB»CC»DD»EE»FF' string union all
    select 'ZZ»XX»RR»PP»EE»FF' )
    SELECT REGEXP_EXTRACT(string, r"([^»]*)") AS string_1 from test

使用代码我可以提取字符串的第一部分(即" aa"one_answers" zz"(的正则条件。但是,是否有任何方法可以在第三个特殊字符"»"之前提取字母,其中预期的输出应为" cc"one_answers" rr"

感谢您的帮助

您可以使用 SPLIT而不是正则是:

with test as (
  select 'AA»BB»CC»DD»EE»FF' string union all
  select 'ZZ»XX»RR»PP»EE»FF'
)
SELECT SPLIT(string, '»')[OFFSET(2)] AS string_1 from test

这将返回"CC""RR"作为输出。

作为替代

#standardSQL
WITH test AS (
  SELECT 'AA»BB»CC»DD»EE»FF' str UNION ALL
  SELECT 'ZZ»XX»RR»PP»EE»FF' 
)
SELECT code
FROM test, UNNEST(SPLIT(str, '»')) code WITH OFFSET pos
WHERE pos = 2   

结果为

Row code     
1   CC   
2   RR   

最新更新