Bigquery Regex用于特殊字符

时间:2018-02-06 19:08:01

标签: javascript google-bigquery

下面是一个示例代码,其中包含一个用特殊字符“»”分区的长字符串。我需要拉出第一个和第三个特殊字符(»)之前的字符串。

    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”和“ZZ”。但是有没有办法在第三个特殊字符“»”之前提取字母,其中预期的输出应该是“CC”和“RR”

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您可以使用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"作为输出。

答案 1 :(得分:1)

作为替代

  
#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