regex - Redshift - 根据模式提取数据
问题描述
我正在尝试使用 Redshift 中的特定模式从以下文本中提取子字符串。
value
proda_cat1_subcat_a_jan2020
cat2_subcat_b_prodb_jan2020
我正在尝试从上面的字符串中提取cat1_subcat_a
字符串cat2_subcat_b
。
我试过这样做regexp_substr(value,'cat[^_]')
,但这只会将字符串拉到第一个下划线
预期输出:
value, output
proda_cat1_subcat_a_jan2020, cat1_subcat_a
cat2_subcat_b_prodb_jan2020, cat2_subcat_b
解决方案
尝试使用以下正则表达式模式:
cat[0-9]+_[^_]+_[^_]+
SQL查询:
SELECT
value,
REGEXP_SUBSTR(value, 'cat[0-9]+_[^_]+_[^_]+') AS output
FROM yourTable;
演示
演示在 Oracle 中,但语法也应该适用于 Redshift。
推荐阅读
- swift - 如何在函数外部使用变量,我希望将 documentdata() 变量放入答案按钮
- c - 什么参数设置为主循环
- git - Git 在 NanoServer 中不起作用(在 Docker 中)
- python - 使用 joblib 在数据帧 itertuples() 行上并行循环
- javascript - 在 JS 或 jQuery 中将格式日期 jj-mm-aaaa 更改为 jj/mm/aaaa
- c++ - 在opengl中,我可以同时使用两个MatrixMode吗?
- reactjs - 在 React 中处理大型矩阵时的性能
- javascript - 如何将特定列的鼠标悬停在角度8中的表格中显示特定数据
- r - 选择要绘制为点须的系数
- java - 从 Java 8 迁移到 Java 11。在运行时,是否可以从用 Java 8 编译的库中的类文件访问 JDK 内部 API?