適用於:
Databricks SQL
Databricks Runtime 11.3 LTS 和更新版本
傳回 str 中符合 regexp 的第一個子字串。
語法
regexp_substr( str, regexp )
引數
-
strSTRING:要比對的表達式。 -
regexpSTRING:具有相符模式的表達式。
傳回
STRING。
regexp_substr 回傳整個匹配的 regexp 子串,而非單一捕獲群組。
要返回特定的捕獲群,請使用 regexp_extract。
僅考慮第一場比賽。 要退回每場比賽,請使用 regexp_extract_all。
字 regexp 串必須是正則表達式。 請參見 「正則表達式 」以了解所支援的語法。
使用常值時,請使用 raw-literal (r prefix) 以避免逸出字元前置處理。
若 str 或 regexp 為 NULL,或找不到該模式,則結果為 NULL。
常見錯誤條件
範例
選擇多個選項之一
該模式Ste(v\|ph)en與 或 之一相符StephenSteven。 函式回傳第一個匹配。
> 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