REGEX_extract 需要占用路径的一部分

问题描述 投票:0回答:1

我有一个名为“path”的列,我想创建一个包含项目名称的新列:

Folder/1//File/2//Project/AAA//Dataset/BBBB
Folder/1//File/2//Project/ZZZ//Dataset/XX55
Folder/1//File/3//Project/blabla
Folder/1//File/3//Project/hhhhhhh//Bucket/central

我想要得到的只是

Project/
之后的文本,这是预期的输出:

AAA
ZZZ
blabla
hhhhhhh

我已经尝试过

REGEXP_EXTRACT(REPLACE(path, '//', ''), r'Project/([^/]+)') as Project
命令,但我得到的结果如下:

AAADataset
ZZZDataset
blabla
hhhhhhhBucket
sql replace google-bigquery
1个回答
0
投票

这是一个逻辑错误:如果您打算匹配

/
字符,则不应将其从预期位置中删除。

REPLACE(path, '//', '')
部分删除所有双正斜杠。如果从上面的代码中删除它,您将能够匹配
/
或字符串末尾与
[^/]*

因此,解决方案如下

REGEXP_EXTRACT(path, r'Project/([^/]+)') as Project
© www.soinside.com 2019 - 2024. All rights reserved.