REGEX_EXTRACT_FIRST()

All functions > STRING > REGEX_EXTRACT_FIRST()

Returns the first substring that matches the pattern, optionally selecting a capture group index (0 = entire match, 1 = first group, …).

Signatures

Returns: The matched substring; empty string when there is no match; NULL if the haystack is NULL

REGEX_EXTRACT_FIRST(string: VARCHAR, pattern: VARCHAR, [group_number: BIGINT]) → VARCHAR
sql
ParameterTypeRequiredDescription
stringVARCHARYesString to search in
patternVARCHARYesRegular expression pattern (use capture groups for extraction)
group_numberBIGINTNoCapture group to return (0 = full match, 1 = first group, etc.). Defaults to 0

Notes

  • Only the first match is considered
  • Prefer leaving group_number at the default when you need the same capture-group semantics everywhere; some translation paths only support the full-match extract
  • See REGEX_EXTRACT_ALL for every non-overlapping match

See also

Examples

FeatureQL
SELECT
    f1 := REGEX_EXTRACT_FIRST('abc123def', '[0-9]+'), -- Extract digits
    f2 := REGEX_EXTRACT_FIRST('2024-01-15', '(\d{4})-(\d{2})-(\d{2})', 1), -- Extract year
    f3 := REGEX_EXTRACT_FIRST('2024-01-15', '(\d{4})-(\d{2})-(\d{2})', 2), -- Extract month
    f4 := REGEX_EXTRACT_FIRST('2024-01-15', '(\d{4})-(\d{2})-(\d{2})', 3), -- Extract day
    f5 := REGEX_EXTRACT_FIRST('no match here', '[0-9]+'), -- No match returns empty
    f6 := REGEX_EXTRACT_FIRST(NULL(VARCHAR), '[0-9]+') -- NULL haystack
;
Result
f1 VARCHARf2 VARCHARf3 VARCHARf4 VARCHARf5 VARCHARf6 VARCHAR
12320240115(empty)NULL

Last update at: 2026/05/26 17:22:09