适用于:
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-literal (r prefix) 以避免转义字符预处理。
如果 str 或 regexp 未 NULL找到模式,则结果为 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