我想使用正则表达式提取以下数据模式进行提取

I want to extract by using regexp extract for the below data pattern

提问人:Shaker Khan 提问时间:10/30/2023 最后编辑:nbkShaker Khan 更新时间:10/30/2023 访问量:30

问:

我有数据模式

"<AccessEntry: role=READER,
[email protected]>"

"<AccessEntry: role=WRITER, 
specialgroup=projectReaders>"

数据位于 Bigquery 表中。我想在其他列和其他列中提取userbyemail / specialgroup。这些值是动态的,但我给了你理解的模式。[email protected]/projectReaders

我尝试了正则表达式,但我只是在不同的列中获得了角色的值,但无法在其他列中获取其他值。

SQL 正则表达式 google-cloud-platform google-bigquery

评论

0赞 Shaker Khan 10/30/2023
数据位于不同的行中。
1赞 SelVazi 10/30/2023
你能分享一下你到目前为止尝试过什么吗?

答:

0赞 SelVazi 10/30/2023 #1

您可以使用 REGEXP_EXTRACT_ALL 返回与正则表达式匹配的所有数据子字符串的数组,并ARRAY_TO_STRING将返回的数组转换为字符串:

with cte as (
    select '<AccessEntry: role=READER, [email protected]>" "<AccessEntry: role=WRITER, specialgroup=projectReaders>' as col
)
select *, ARRAY_TO_STRING(REGEXP_EXTRACT_ALL(col, r', (.+?)='), '/') as col1,
          ARRAY_TO_STRING(REGEXP_EXTRACT_ALL(col, r'=([^,;]+?)>'), '/') as col2
from cte;