首页 > 解决方案 > 正则表达式匹配第一次出现斜线之后的所有内容,直到第二次出现斜线

问题描述

需要匹配第一个 / 之后的所有内容,直到第二个 / 或字符串结尾。给出以下示例:

/US
/CA
/DE/Special1
/FR/Special 1/special2

需要返回以下内容:

US
CA
DE
FR

在 DataStudio 中使用它有效:

^(.+?)/

然而,BigQuery 中的相同只是返回 null。在这里尝试了几十个其他示例后,决定问自己。谢谢你的帮助。

标签: regexgoogle-bigquery

解决方案


对于这种简单的提取 - 考虑使用更便宜的字符串函数而不是更昂贵的正则表达式函数。请参阅下面的示例

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '/US' line UNION ALL
  SELECT '/CA' UNION ALL
  SELECT '/DE/Special1' UNION ALL
  SELECT '/FR/Special 1/special2' 
)
SELECT line, SPLIT(line, '/')[SAFE_OFFSET(1)] value 
FROM `project.dataset.table`   

结果

Row line                    value    
1   /US                     US   
2   /CA                     CA   
3   /DE/Special1            DE   
4   /FR/Special 1/special2  FR   

推荐阅读