regex - 正则表达式匹配第一次出现斜线之后的所有内容,直到第二次出现斜线
问题描述
需要匹配第一个 / 之后的所有内容,直到第二个 / 或字符串结尾。给出以下示例:
/US
/CA
/DE/Special1
/FR/Special 1/special2
需要返回以下内容:
US
CA
DE
FR
在 DataStudio 中使用它有效:
^(.+?)/
然而,BigQuery 中的相同只是返回 null。在这里尝试了几十个其他示例后,决定问自己。谢谢你的帮助。
解决方案
对于这种简单的提取 - 考虑使用更便宜的字符串函数而不是更昂贵的正则表达式函数。请参阅下面的示例
#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
推荐阅读
- jquery - jquery.colorbox.js 幻灯片太慢了
- javascript - 无法在 safari iphone 中使用 dblclick() 函数?
- algorithm - 在访问某些顶点时找到加权图中的最短路径
- java - 我应该使用 tomcat 还是应用程序服务器?
- vue.js - Vuejs 和 Stripe Checkout:错误消息“您是否正确注册了组件?”
- android - 有没有更好的方法将上下文传递给辅助 kotlin 类?
- javascript - 我在使用 transform-decorators-legacy 时遇到问题
- python-3.x - 如何在python中使用相同的键向字典添加值?
- python - 某些数据未存储在数组中
- netsuite - 计算百分比范围的机会数