跳到主要内容

regexp_substr:正则提取子串

速查结论

regexp_substr(str, regexp) 是 Spark SQL 中用于返回字符串中匹配正则表达式的第一个子字符串的函数。

语法

regexp_substr(str, regexp)

参数说明

参数类型说明
strSTRING需要搜索的源字符串表达式
regexpSTRING表示正则表达式的字符串,应为 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_extractregexp_extract_all

Since: 3.4.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

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

交流微信二维码

你可能还想看