我有一個正則運算式,它從列中的引數中提取值,其中很少有由“|”分隔的額外引數。欄位中的引數亂序。
我的正則運算式:
^(?:_AB=)[^\\|]*
例如:
| 外引數 | 正則運算式結果 |
|---|---|
| _A=0|_AB=0|_ABC=132|_AC=0|_ACD=TEST|_ADU=9|TEST_P=1 | 0 |
| _A=0|AG=INFO|_ABC=132|_ACD=EXP|_AD=9 | 空值 |
這個解決方案一直有效,直到我不得不在 BigQuery 中使用它。您是否有任何想法在不使用 Positive Lookbehind 的情況下重寫此模式?
uj5u.com熱心網友回復:
這行得通嗎?
SELECT extraparams, REGEXP_REPLACE(REGEXP_EXTRACT(extraparams, r'_AB=(. ?\|){1}'), '\\|','') AS regexp_results FROM ( SELECT '_A=0|_AB=0|_ABC=132|_AC=0|_ACD=TEST|_ADU=9|TEST_P=1' AS extraparams UNION ALL SELECT '_A=0|AG=INFO|_ABC=132|_ACD=EXP|_AD=9' AS extraparams )
uj5u.com熱心網友回復:
也考慮下面的方法
select extraparams,
( select split(kv, '=')[safe_offset(1)]
from unnest(split(extraparams, '|')) kv
where split(kv, '=')[offset(0)] = '_AB'
) as regexp_results
from your_table
如果應用于您問題中的樣本資料 - 輸出是

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458795.html
