regexp_substr:正则提取子串
速查结论
regexp_substr(str, regexp) 是 Spark SQL 中用于返回字符串中匹配正则表达式的第一个子字符串的函数。
语法
regexp_substr(str, regexp)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| str | STRING | 需要搜索的源字符串表达式 |
| regexp | STRING | 表示正则表达式的字符串,应为 Java 正则表达式 |
示例
> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', 'Ste(v|ph)en');
Steven
> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', 'Jeck');
NULL
常见报错与避坑指南
- 无匹配返回 NULL:当正则表达式在字符串中未找到匹配时,函数返回 NULL。这与某些函数的空字符串返回值不同,在进行字符串拼接等操作时需要做 NULL 判断。
- 仅返回第一个匹配:与
regexp_extract_all不同,regexp_substr只返回第一个匹配的子字符串。如果需要所有匹配项,请使用regexp_extract_all。 - 正则分组的影响:如果正则表达式中包含捕获组,返回值是整个匹配的字符串,而不是某个组的内容。如需提取特定组,请使用
regexp_extract或regexp_extract_all。
Since: 3.4.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
