# regexp_extract — DuckDB 1.5.5

If `string` contains the `regex` pattern, returns the capturing group specified by optional parameter `group`; otherwise, returns the empty string. The `group` must be a constant value. If no `group` is given, it defaults to 0. A set of optional regex `options` can be set.

- Reference: /products/haybarn/functions/releases/duckdb-1.5.5/regexp_extract/
- JSON: /products/haybarn/functions/api/v1/duckdb-1.5.5/functions/regexp_extract.json
- Snapshot ID: duckdb-1.5.5
- Engine: duckdb v1.5.5
- Source ID: d8cdaa33fd
- Binary SHA-256: 8463eb26527b278109cfddffc4606e1019ebefcfe2eac75efc53c76ed8f282d5
- Captured: 2026-09-05T18:37:40.699Z
- Source: https://github.com/duckdb/duckdb/releases/tag/v1.5.5
- Loaded extensions: autocomplete, core_functions, icu, json, parquet, shell

## Interpretation

- Choose a snapshot matching the target engine and build. The default is captured from the published Haybarn WASM package used by the browser playground. Historical native snapshots are also available.
- Availability is an observation in the recorded build and extension profile, not a guarantee of support in every installation or in WASM.
- Types and descriptions are declarations from duckdb_functions(). Binding can specialize result types. Null means not supplied by the catalog; do not invent defaults, optionality, argument mode, or table output columns.
- Raw parameter arrays preserve catalog order for scalar/aggregate/macro functions. Raw table arguments are alphabetical. Use callingConvention for engine-confirmed positional order and named arguments; null modes are unrecorded. Named does not mean optional. Macro defaults and special named variadic behavior are not supplied by duckdb_functions().
- Catalog examples are source material and may require data or extensions. runnableExamples contains separately verified SQL for the pinned WASM package; sample-data adaptations and guide examples are labeled separately.
- Guide annotations and recipes are separate editorial content. The browser runner always uses Haybarn WASM 1.5.5-rc3, independently of the documentation snapshot.
- All URLs beginning with / are relative to the origin hosting this document. Exports require no JavaScript, cookies, API key, or browser engine.

## Overloads

### overload-b8cffe0426a1874f

Kind: scalar. Parameter order: catalog-order.

```text
regexp_extract(string: VARCHAR, regex: VARCHAR) → VARCHAR
```

Link: /products/haybarn/functions/releases/duckdb-1.5.5/regexp_extract/#overload-b8cffe0426a1874f

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| string | VARCHAR | not recorded |
| regex | VARCHAR | not recorded |

Declared return type: VARCHAR. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

### overload-b0ed06df47c47724

Kind: scalar. Parameter order: catalog-order.

```text
regexp_extract(string: VARCHAR, regex: VARCHAR, group: INTEGER) → VARCHAR
```

Link: /products/haybarn/functions/releases/duckdb-1.5.5/regexp_extract/#overload-b0ed06df47c47724

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| string | VARCHAR | not recorded |
| regex | VARCHAR | not recorded |
| group | INTEGER | not recorded |

Declared return type: VARCHAR. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

### overload-bfc9c4d23c2fc181

Kind: scalar. Parameter order: catalog-order.

```text
regexp_extract(string: VARCHAR, regex: VARCHAR, name_list: VARCHAR[]) → VARCHAR
```

Link: /products/haybarn/functions/releases/duckdb-1.5.5/regexp_extract/#overload-bfc9c4d23c2fc181

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| string | VARCHAR | not recorded |
| regex | VARCHAR | not recorded |
| name_list | VARCHAR[] | not recorded |

Declared return type: VARCHAR. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

If `string` contains the `regex` pattern, returns the capturing groups as a struct with corresponding names from `name_list`; otherwise, returns a struct with the same keys and empty strings as values. A set of optional regex `options` can be set.

### overload-a5584d1654478921

Kind: scalar. Parameter order: catalog-order.

```text
regexp_extract(string: VARCHAR, regex: VARCHAR, group: INTEGER, options: VARCHAR) → VARCHAR
```

Link: /products/haybarn/functions/releases/duckdb-1.5.5/regexp_extract/#overload-a5584d1654478921

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| string | VARCHAR | not recorded |
| regex | VARCHAR | not recorded |
| group | INTEGER | not recorded |
| options | VARCHAR | not recorded |

Declared return type: VARCHAR. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

### overload-f01c13ed1e5ca267

Kind: scalar. Parameter order: catalog-order.

```text
regexp_extract(string: VARCHAR, regex: VARCHAR, name_list: VARCHAR[], options: VARCHAR) → VARCHAR
```

Link: /products/haybarn/functions/releases/duckdb-1.5.5/regexp_extract/#overload-f01c13ed1e5ca267

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| string | VARCHAR | not recorded |
| regex | VARCHAR | not recorded |
| name_list | VARCHAR[] | not recorded |
| options | VARCHAR | not recorded |

Declared return type: VARCHAR. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

If `string` contains the `regex` pattern, returns the capturing groups as a struct with corresponding names from `name_list`; otherwise, returns a struct with the same keys and empty strings as values. A set of optional regex `options` can be set.


## Guide recipes

No guide recipes.

## Engine catalog examples

Source examples may require additional data or extensions. Expressions are wrapped in SELECT; execution verification is not recorded.

Reported for: overload-b8cffe0426a1874f

```sql
SELECT regexp_extract('abcde', '[a-z]{3}');
```

Reported for: overload-b0ed06df47c47724

```sql
SELECT regexp_extract('abc', '([a-z])(b)', 1);
```

Reported for: overload-bfc9c4d23c2fc181

```sql
SELECT regexp_extract('2023-04-15', '(\d+)-(\d+)-(\d+)', ['y', 'm', 'd']);
```

Reported for: overload-a5584d1654478921

```sql
SELECT regexp_extract('ABC', '([a-z])(b)', 1, 'i');
```

Reported for: overload-f01c13ed1e5ca267

```sql
SELECT regexp_extract('John Doe', '([a-z]+) ([a-z]+)', ['first_name', 'last_name'], 'i');
```

## Runnable examples

Executed successfully in Haybarn WASM 1.5.5-rc3. Sample data and guide examples are separate from the original catalog.

```sql
SELECT regexp_extract('ABC', '([a-z])(b)', 1, 'i');
```

```sql
SELECT regexp_extract('abc', '([a-z])(b)', 1);
```

```sql
SELECT regexp_extract('John Doe', '([a-z]+) ([a-z]+)', ['first_name', 'last_name'], 'i');
```

```sql
SELECT regexp_extract('2023-04-15', '(\d+)-(\d+)-(\d+)', ['y', 'm', 'd']);
```

```sql
SELECT regexp_extract('abcde', '[a-z]{3}');
```

## Additional DuckDB documentation

- [Regular Expressions](https://duckdb.org/docs/current/sql/functions/regular_expressions#regexp_extractstring-pattern-name_list-options)
- [Text Functions](https://duckdb.org/docs/current/sql/functions/text#regexp_extractstring-regex-name_list-options)
- [Text Functions](https://duckdb.org/docs/current/sql/functions/text.html#regexp_extractstring-regex-name_list-options)

## In other engines

### Amazon Redshift: regexp_substr()



Amazon Redshift:

```sql
SELECT REGEXP_SUBSTR(abc, 'pattern(group)', 2) FROM table
```

Haybarn / DuckDB:

```sql
SELECT REGEXP_EXTRACT(SUBSTRING(abc, 2), 'pattern(group)') FROM "table"
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_redshift.py#L811).

### Apache Hive: regexp_extract()



Apache Hive:

```sql
REGEXP_EXTRACT('abc', '(a)(b)(c)')
```

Haybarn / DuckDB:

```sql
REGEXP_EXTRACT('abc', '(a)(b)(c)', 1)
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_hive.py#L902).

### BigQuery: regexp_extract()

Same function. The SQLGlot example uses the same call in both engines.

```sql
SELECT REGEXP_EXTRACT(a, 'pattern') FROM t
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_duckdb.py#L1285).

### Presto: regexp_extract()

Same function. The SQLGlot example uses the same call in both engines.

```sql
REGEXP_EXTRACT('abc', '(a)(b)(c)')
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_presto.py#L1157).

### Snowflake: regexp_substr()



Snowflake:

```sql
REGEXP_SUBSTR(subject, pattern)
```

Haybarn / DuckDB:

```sql
REGEXP_EXTRACT(subject, pattern)
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_snowflake.py#L4981).

## Observed availability

| Snapshot | Observed | Overloads | JSON |
| --- | --- | --- | --- |
| haybarn-1.5.5-rc3 | present | 5 | [reference](/products/haybarn/functions/api/v1/haybarn-1.5.5-rc3/functions/regexp_extract.json) |
| duckdb-1.5.5 | present | 5 | [reference](/products/haybarn/functions/api/v1/duckdb-1.5.5/functions/regexp_extract.json) |
| duckdb-1.4.4 | present | 5 | [reference](/products/haybarn/functions/api/v1/duckdb-1.4.4/functions/regexp_extract.json) |
| duckdb-1.3.2 | present | 5 | [reference](/products/haybarn/functions/api/v1/duckdb-1.3.2/functions/regexp_extract.json) |

Engine catalog documentation is derived from MIT-licensed Haybarn and DuckDB. [Notices](/third-party-notices.txt).
