【问题标题】:Extract substring with a specific pattern in Hive SQL在 Hive SQL 中提取具有特定模式的子字符串
【发布时间】:2021-04-04 04:08:02
【问题描述】:
我有一列包含此示例数据。我需要提取所有以“M6”开头的子字符串。有没有办法用 regexp_extract 做到这一点?
| Data Column |
| HEY01230328_M6K21SG_UNO_NYC_241 |
| M6EW2BJ_UNO_NYC_251 |
| M6HW2WL_UNO_NYC_251 |
| HEY08460329_NA_M6LAB3D_UNO_NYC_241 |
| Desired Output |
| M6K21SG |
| M6EW2BJ |
| M6HW2WL |
| M6LAB3D |
【问题讨论】:
标签:
sql
regex
hive
hiveql
【解决方案1】:
尝试使用:
SELECT colname FROM tableName WHERE REGEXP_EXTRACT(colname, ".*(M6[^_]*).*",1)
使用的正则表达式:
.*(M6[^_]*).*
Regex Demo
说明:
-
.* - 匹配 0+ 个非换行符的字符
-
(M6[^_]*) - 匹配 M6 后跟 0+ 个非 _ 的字符。因此,在 M6 之后,它会继续匹配所有内容,直到找到下一个 _。括号用于将这个子匹配存储在第 1 组中
-
.* - 匹配 0+ 个非换行符的字符