我有一个名为“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
这是一个逻辑错误:如果您打算匹配
/
字符,则不应将其从预期位置中删除。
REPLACE(path, '//', '')
部分删除所有双正斜杠。如果从上面的代码中删除它,您将能够匹配 /
或字符串末尾与 [^/]*
。
因此,解决方案如下
REGEXP_EXTRACT(path, r'Project/([^/]+)') as Project