# ExtractRegEx Función de script y de gráfico

ExtractRegEx() extrae texto de una expresión de cadena de entrada utilizando el patrón de expresión regular especificado. La función devuelve un valor nulo si no se encuentra ninguna coincidencia.

Esta función realiza operaciones regex que distinguen entre mayúsculas y minúsculas. Puede utilizar alternativamente la variante ExtractRegExI() para realizar operaciones regex sin distinguir mayúsculas de minúsculas.

Sintaxis:

ExtractRegEx (text, regex [, field\_no])

Tipo de datos que devuelve: cadena

Argumentos

| Argumento | Descripción |
| --- | --- |
| text | Expresión de cadena que contiene el texto que debe extraerse en el valor de retorno. |
| regex | La expresión regular que utilizar para extraer el texto. |
| field\_no | El número de la coincidencia que extraer. Esto resulta útil cuando en el texto pueden encontrarse múltiples coincidencias para la expresión regular. Por ejemplo, especifique un valor de `4` para extraer la cuarta coincidencia. Se trata de un argumento opcional. Especifique un valor negativo para invertir el orden de las coincidencias.<br><br>Lo que sigue se aplica independientemente de si la función se utiliza en un script de carga o en una expresión de gráfico:<br><br><ul> <li> <p>Si <span>field_no</span> es positivo, la función devolverá un valor, identificando las coincidencias de izquierda a derecha.</p> </li> <li> <p>Si <span>field_no</span> es negativo, la función devolverá un valor, identificando las coincidencias de derecha a izquierda.</p> </li> </ul><br><br>Cuando utilice la función en un script de carga:<br><br><ul> <li> <p>Si utiliza la función <span>ExtractRegEx()</span> en una sentencia <span>LOAD</span> y se omite <span>field_no</span>, la función genera tantos registros como coincidencias haya.</p> </li> <li> <p>Si se cargan varios campos mediante <span>ExtractRegEx()</span> y ninguno de ellos especifica un argumento <span>field_no</span>, se crean los productos cartesianos de todas las combinaciones.</p> </li> </ul><br><br>Cuando utilice la función en una expresión de gráfico:<br><br><ul> <li> <p>Si se omite <span>field_no</span>, el valor por defecto es <code>1</code>.</p> </li> </ul> |

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Devuelve `a`, que es la primera coincidencia encontrada. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Devuelve `b`, que es la segunda coincidencia encontrada. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Devuelve `1`, que es la cuarta coincidencia encontrada. |
| `ExtractRegEx('abc','a\|b',-1)` | Devuelve `b`. Cuando se especifica un valor negativo, las coincidencias se cuentan a la inversa. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Devuelve un valor nulo, porque ExtractRegEx() distingue entre mayúsculas y minúsculas, y no se ha utilizado la variante que distingue entre mayúsculas y minúsculas. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | Devuelve `A`, porque se utilizó la variante sin distinción entre mayúsculas y minúsculas ExtractRegExI(). |

## Cuándo se utiliza

Puede utilizar Extract RegEx() para extraer información que desee aislar de datos que también puedan contener otra información (por ejemplo, texto libre o cadenas JSON).Por ejemplo:

* Extraiga direcciones de correo electrónico, números de teléfono, números de cuenta y otra información del texto.

* Extraiga valores numéricos de un texto (por ejemplo, divisas).

* Estandarice el formato de los datos textuales o numéricos.

## Ejemplo 1: script de carga para extraer direcciones de correo electrónico de JSON

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.htm)

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una tabla `OrderDetails` que contiene un campo `OrderJson`.

* El campo `OrderJson` contiene una cadena JSON con los datos del pedido. El formato, como la sangría y los saltos de línea, se ha eliminado del JSON. Los datos del pedido contienen direcciones de correo electrónico que queremos extraer en valores separados.

* Una nueva tabla `EmailAddresses`, que se carga después de `OrderDetails`. En la sentencia `EmailAddresses` LOAD, cargamos el campo `OrderJson` de la tabla `OrderDetails` y creamos un nuevo campo calculado, `Email`, que contiene las direcciones de correo electrónico extraídas. A continuación, se elimina `OrderDetails`.

Nuestros requisitos:

* Direcciones de correo electrónico en un dominio específico: `example.com`.

* Direcciones de correo electrónico que contienen cualquier número de caracteres alfanuméricos, así como un conjunto definido de caracteres especiales.

Script de carga

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');

EmailAddresses:

Load OrderJson, ExtractRegEx(OrderJson, '[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com') as Email Resident OrderDetails;

Drop table OrderDetails;
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* `Email`

Tabla de resultados

| Email |
| --- |
| amalia.craig@example.com |
| jane.doe@example.com |
| john.doe@example.com |
| ken.roberts@example.com |

Al no especificar un valor de argumento para field\_no, todas las coincidencias se extraen en valores separados automáticamente.

## Ejemplo 2: script de carga para extraer valores numéricos de importes en divisa

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.htm)

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una tabla `Sales` que contiene datos de ventas.

* Dentro de la tabla `Sales`, un campo denominado `Amount`, que contiene los importes de las transacciones en USD. Estos importes se expresan como cadenas, que incluyen símbolos y códigos monetarios.

* La definición de un campo personalizado dentro de `Sales`, `OrderAmountNumeric_USD`, que extrae cada importe en un valor puramente numérico.Estos datos deben estar en forma numérica para que podamos utilizarlos en agregaciones de gráficos.

Script de carga

```
SET DateFormat='MM-DD-YYYY';

Sales:

Load ExtractRegEx(Amount, '[0-9]+.[0-9]{2}') as OrderAmountNumeric_USD, * Inline `

OrderID, OrderDate, Product, Amount
1, '12-27-2024', Software, $100.31 USD
2, '12-28-2024', Electronics, $513.93 USD
3, '12-29-2024', Grocery, $34.66 USD
4, '12-30-2024', Furniture, $1124.58 USD
5, '12-31-2024', Software, $95.95 USD
6, '01-01-2025', Software, $601.00 USD
7, '01-02-2025', Grocery, $1534.20 USD
8, '01-03-2025', Produce, $51.49 USD
9, '01-04-2025', Home Improvement, $176.12 USD
10, '01-05-2025', Produce, $432.77 USD
11, '01-06-2025', Software, $270.01 USD
12, '01-07-2025', Electronics, $83.85 USD
13, '01-08-2025', Furniture, $65.65 USD
14, '01-09-2025', Electronics, $1526.39 USD
15, '01-10-2025', Software, $432.44 USD
16, '01-11-2025', Furniture, $888.15 USD
17, '01-12-2025', Furniture, $300.00 USD
18, '01-13-2025', Grocery, $109.53 USD
19, '01-14-2025', Furniture, $487.97 USD
20, '01-15-2025', Software, $65.09 USD
`;
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Tabla de resultados

| OrderID | Amount | OrderAmountNumeric\_USD |
| --- | --- | --- |
| 1 | $100.31 USD | 100.31 |
| 2 | $513.93 USD | 513.93 |
| 3 | $34.66 USD | 34.66 |
| 4 | $1124.58 USD | 1124.58 |
| 5 | $95.95 USD | 95.95 |
| 6 | $601.00 USD | 601.00 |
| 7 | $1534.20 USD | 1534.20 |
| 8 | $51.49 USD | 51.49 |
| 9 | $176.12 USD | 176.12 |
| 10 | $432.77 USD | 432.77 |
| 11 | $270.01 USD | 270.01 |
| 12 | $83.85 USD | 83.85 |
| 13 | $65.65 USD | 65.65 |
| 14 | $1526.39 USD | 1526.39 |
| 15 | $432.44 USD | 432.44 |
| 16 | $888.15 USD | 888.15 |
| 17 | $300.00 USD | 300.00 |
| 18 | $109.53 USD | 109.53 |
| 19 | $487.97 USD | 487.97 |
| 20 | $65.09 USD | 65.09 |

## Ejemplo 3: expresiones de gráfico para extraer direcciones de correo electrónico de JSON

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ExtractRegEx.htm)

#### Expresiones de gráfico y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una tabla `OrderDetails` que contiene un campo `OrderJson`.

* El campo `OrderJson` contiene una cadena JSON con los datos del pedido. El formato, como la sangría y los saltos de línea, se ha eliminado del JSON. Los datos del pedido contienen direcciones de correo electrónico que queremos extraer en valores separados.

Nuestros requisitos:

* Direcciones de correo electrónico en un dominio específico: `example.com`.

* Direcciones de correo electrónico que contienen cualquier número de caracteres alfanuméricos, así como un conjunto definido de caracteres especiales.

Script de carga

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');
```

Resultados

Cargue los datos y abra una hoja. Cree una tabla y añada cada una de las expresiones siguientes como dimensiones calculadas:

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',1)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',2)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',3)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',4)`

Tabla de resultados

| =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',1) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',2) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',3) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',4) |
| --- | --- | --- | --- |
| john.doe@example.com | jane.doe@example.com | amalia.craig@example.com | ken.roberts@example.com |

## Más información

* [Trabajar con expresiones regulares en scripts de carga y expresiones de gráfico](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)