【发布时间】:2023-03-28 11:02:01
【问题描述】:
我想提取列中的单词,列值如下所示:'p-fr-youtube-car'。并且它们都应该被提取到自己的列中。
输入:
p-fr-youtube-car
期望的输出:
Country = fr
Channel = youtube
Item = car
我尝试在下面提取第一个单词,但无法找出其余的单词。什么 RegEx 将从这个输入中实现我想要的输出?我怎样才能使它不区分大小写 fr 和 FR 将是相同的。
REGEXP_EXTRACT_ALL(CampaignName, r"^p-([a-z]*)") AS Country
【问题讨论】:
-
您可以使用
([^-]+)来匹配连字符之间的部分。要获取youtube、^p-[^-]+-([^-]+)和获取car,请使用^p-[^-]+-[^-]+-([^-]+)。 -
你的意思是这样吗? REGEXP_EXTRACT_ALL(CampaignName, r'(?i)^p-[^-]+-([^-]+)([az]*)') AS Channel,我得到错误:传递给提取函数的正则表达式不能有超过 1 个捕获组
-
我写了确切的模式,无需干预它们。
REGEXP_EXTRACT_ALL(CampaignName, r'^p-[^-]+-([^-]+)')和REGEXP_EXTRACT_ALL(CampaignName, r'^p-[^-]+-[^-]+-([^-]+)')。 单独使用。 -
啊,好极了,现在我明白了。谢谢你。这对我有用!
标签: regex google-bigquery extract regexp-replace