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

SubFieldRegEx() extrae texto de una expresión de cadena de entrada, utilizando el patrón de expresión regular especificado como delimitador. 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 SubFieldRegExI() para realizar operaciones regex sin distinguir mayúsculas de minúsculas.

Sintaxis:

SubFieldRegEx (text, regex\_delimiter [, field\_no])

Tipo de datos que devuelve: cadena

Argumentos

| Argumento | Descripción |
| --- | --- |
| text | El texto de la cadena de entrada en la que desea buscar un patrón de expresión regular. |
| regex\_delimiter | Expresión de cadena que contiene la expresión regular que se ha de utilizar como delimitador. Puede especificar más de un delimitador en el mismo patrón de expresión regular separándolos con un carácter `\|` (símbolo vertical). |
| field\_no | Valor entero que indica el número de la subdivisión que desea extraer. Por ejemplo, especifique un valor de `4` para extraer la cuarta subdivisión. Se trata de un argumento opcional.<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>SubFieldRegEx()</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>SubFieldRegEx()</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 |
| --- | --- |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 1)` | Devuelve `a`. En este ejemplo, se especifican tres caracteres delimitadores (espacio, coma y punto y coma). |
| `SubFieldRegEx('a;b;c;1;2;3',';', 2)` | Devuelve `b`. En este caso, solo se especifica un carácter delimitador (punto y coma). |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 4)` | Devuelve `1`. |

## Cuándo utilizar SubFieldRegEx

Puede utilizar SubFieldRegEx() para extraer varios valores individuales de una lista delimitada. Por ejemplo, si tiene una lista separada por comas contenida dentro de un bloque más grande de lenguaje natural, puede utilizar esta función para aislar cada valor individual de la lista en un nuevo registro de su modelo de datos.

## Ejemplo 1: script de carga para separar etiquetas por transacción

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 denominada `Transaction_By_Tag`, que contiene inicialmente datos de transacciones. Estos datos se procesan para extraer los valores individuales de las etiquetas en nuevos registros.

* La creación de un campo, `TransactionTag`, para almacenar los valores de las etiquetas extraídas.

En el campo que contiene las etiquetas de transacción, las etiquetas múltiples están contenidas dentro de cadenas de texto, separadas por delimitadores. El delimitador puede ser cualquiera de los siguientes caracteres: , | ;

Script de carga

```
Transaction_By_Tag:

Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID	Product	Tags	Amount
1	Product A	Special order,Eligible for return,Warranty included	100.93
2	Product B	Ineligible for return|No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');

drop fields Tags;
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `ID`

* `Product`

* `TransactionTag`

Tabla de resultados

| ID | Product | TransactionTag |
| --- | --- | --- |
| 1 | Product A | Eligible for return |
| 1 | Product A | Warranty included |
| 1 | Product A | Special order |
| 2 | Product B | No warranty available |
| 2 | Product B | Ineligible for return |
| 3 | Product C | No warranty available |
| 4 | Product B | Liquidation sale |
| 4 | Product B | Special order |
| 4 | Product B | Warranty included |

Este ejemplo demuestra que cuando se utiliza en un script de carga, SubFieldRegEx() devuelve una fila distinta por cada coincidencia encontrada en la cadena de entrada.

## Ejemplo 2: expresiones de gráfico para separar etiquetas por transacción

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.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 denominada `Transaction_By_Tag`, que contiene datos de transacciones.

* Un campo denominado `Tags`, que contiene cadenas de texto para almacenar todas las etiquetas asociadas a una transacción.

Nuestros requisitos:

* En el campo que contiene las etiquetas de transacción, las etiquetas múltiples están contenidas dentro de cadenas de texto, separadas por delimitadores. El delimitador puede ser cualquiera de los siguientes caracteres: , | ;

* Queremos utilizar expresiones de gráfico para separar cada etiqueta en su propio campo, siendo posible añadir hasta tres etiquetas a una transacción.

Script de carga

```
Transaction_By_Tag:

Load * Inline [
ID	Product	Tags	Amount
1	Product A	Special order, Eligible for return, Warranty included	100.93
2	Product B	Ineligible for return | No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `ID`

* `Tags`

Añada estas dimensiones calculadas:

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 1)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 2)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 3)`

Tabla de resultados

| ID | Tags | =SubFieldRegEx(Tags, ',\|;\|\\|', 1) | =SubFieldRegEx(Tags, ',\|;\|\\|', 2) | =SubFieldRegEx(Tags, ',\|;\|\\|', 3) |
| --- | --- | --- | --- | --- |
| 1 | Special order, Eligible for return, Warranty included | Special order | Eligible for return | Warranty included |
| 2 | Ineligible for return \| No warranty available | Ineligible for return | No warranty available | - |
| 3 | No warranty available | No warranty available | - | - |
| 4 | Special order;Liquidation sale;Warranty included | Special order | Liquidation sales | Warranty included |

## Más información

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