regexp_substr 函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 11.3 LTS 及更高版本

返回 str 中与 regexp 匹配的第一个 substring。

语法

regexp_substr( str, regexp )

参数

  • str:要匹配的 STRING 表达式。
  • regexp:具有匹配模式的 STRING 表达式。

返回

一个 STRING

regexp_substr 返回匹配的整个子字符串 regexp ,而不是单个捕获组。 若要返回特定的捕获组,请使用 regexp_extract。 仅考虑第一个匹配项。 若要返回每个匹配项,请使用 regexp_extract_all

字符串 regexp 必须是正则表达式。 有关支持的语法,请参阅 正则表达式

使用文本时,请使用 raw-literalr prefix) 以避免转义字符预处理。

如果 strregexpNULL找到模式,则结果为 NULL

常见错误条件

示例

匹配多个替代项之一

模式 Ste(v\|ph)en 匹配或 StevenStephen。 该函数返回第一个匹配项。

> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', r'Ste(v|ph)en');
 Steven

从字符串中提取第一个数字

使用原始文本, \d 以便将正则表达式引擎传递给正则表达式引擎,而不会将反斜杠加倍。

> SELECT regexp_substr('item 42 costs $19', r'\d+');
 42

不区分大小写

(?i)使用内联标志忽略大小写。

> SELECT regexp_substr('Error: disk full', r'(?i)error');
 Error

提取电子邮件地址

> SELECT regexp_substr('Contact alice@example.com for details', r'\w+@\w+\.\w+');
 alice@example.com

提取第一个井号标签

regexp_substr 仅返回第一个匹配项。 若要返回每个匹配项,请使用 regexp_extract_all

> SELECT regexp_substr('Posts tagged #data #ai #sql', r'#\w+');
 #data

无匹配返回 NULL

与返回空字符串 的regexp_extract不同, regexp_substr 在找不到模式时返回 NULL

> SELECT regexp_substr('Mary had a little lamb', r'Ste(v|ph)en');
 NULL

NULL 输入返回 NULL

> SELECT regexp_substr(NULL, r'Ste(v|ph)en');
 NULL

> SELECT regexp_substr('Mary had a little lamb', NULL);
 NULL

无效的正则表达式模式

> SELECT regexp_substr('abc', '[invalid');
  Error: INVALID_PARAMETER_VALUE.PATTERN