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
| Parameter | Type | Required | Description |
|---|---|---|---|
string | VARCHAR | Yes | String to search in |
pattern | VARCHAR | Yes | Regular expression pattern (use capture groups for extraction) |
group_number | BIGINT | No | Capture group to return (0 = full match, 1 = first group, etc.). Defaults to 0 |
Notes
- Only the first match is considered
- Prefer leaving
group_numberat the default when you need the same capture-group semantics everywhere; some translation paths only support the full-match extract - See
REGEX_EXTRACT_ALLfor 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 VARCHAR | f2 VARCHAR | f3 VARCHAR | f4 VARCHAR | f5 VARCHAR | f6 VARCHAR |
|---|---|---|---|---|---|
| 123 | 2024 | 01 | 15 | (empty) | NULL |
On this page