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

ReplaceRegEx() devuelve una cadena de caracteres tras sustituir una o varias instancias entre una cadena de entrada y un patrón de expresión regular especificado. El texto que sustituye al texto coincidente se especifica en el argumento to\_str. La función opera de izquierda a derecha, pero si especifica un valor de occurrence negativo, las funciones se leerán de derecha a izquierda.

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

[ReplaceRegEx - Script syntax and chart functions](https://play.vidyard.com/1STBZFJeqoouP4SSofdb5R)

Sintaxis:

ReplaceRegEx (text, regex, to\_str [, occurrence])

Tipo de datos que devuelve: cadena de caracteres

Argumentos

| Argumento | Descripción |
| --- | --- |
| text | El texto de la cadena de entrada que desea sustituir, total o parcialmente, por el nuevo texto de to\_str. |
| regex | La expresión regular que define cuándo reemplazar el texto. Se sustituyen las coincidencias entre este argumento y el argumento text. |
| to\_str | El nuevo texto que desea utilizar para sustituir el contenido existente de text. |
| occurrence | El número de la coincidencia (entre el texto de entrada y la expresión regular) que sustituir por el nuevo texto.<br><br>Se trata de un argumento opcional. El valor por defecto es 0 si se omite. Cuando se utiliza un valor 0, o si se omite el argumento, todas las coincidencias entre text y regex se sustituyen por to\_str.<br><br>Puede especificar un valor negativo para occurrence si desea identificar las coincidencias de derecha a izquierda. |

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | Devuelve `abcxxx`. En este ejemplo, todo el texto de la cadena de entrada que coincida con el patrón regex se sustituye por el nuevo texto. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | Devuelve `abcx23`. Solo se sustituye la primera instancia de una coincidencia entre la cadena de entrada y el patrón regex. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | Devuelve `abc123`. Solo hay tres coincidencias posibles entre la cadena de entrada y el patrón regex, por lo que no se realiza ninguna modificación. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | Devuelve `ABC123`. No se realiza ninguna modificación porque ReplaceRegEx() distingue entre mayúsculas y minúsculas, y no se utiliza la variante que no distingue entre mayúsculas y minúsculas. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | Devuelve `555123`. Se utiliza la variante de la función que no distingue entre mayúsculas y minúsculas, ReplaceRegExI(). |

## Cuándo utilizar ReplaceRegEx

Puede utilizar ReplaceRegEx() para modificar el texto y cumplir las normas de formato y conformidad, especialmente cuando existen patrones complejos en los datos. Por ejemplo, puede reformatear las cadenas de números de teléfono para que solo incluyan valores numéricos.

Si es necesario, también puede utilizar esta función para enmascarar información sensible, como la información de identificación personal (IIP), para que no se muestre a los usuarios que analicen su aplicación.

## Ejemplo 1: script de carga para actualizar las direcciones de correo electrónico de los empleados

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.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 `Employees` que contiene las direcciones de correo electrónico de los empleados de una organización.

* Creación de un nuevo campo, `Email_Updated`, para realizar una operación de búsqueda y sustitución de valores en el campo `Email_Original`.

Después de que la empresa haya cambiado de nombre, todas las direcciones de correo electrónico se han actualizado para reflejar el nuevo nombre.

Nuestros requisitos:

* Convierta todas las referencias de dominio de `test.com` a `newcompanyname.com`.

* Necesitamos utilizar operaciones regex que no distingan entre mayúsculas y minúsculas.

Script de carga

```
Employees:

Load 
ReplaceRegExI(Email_Original, '@[a-zA-Z0-9.-]*\.?test\.com', '@newcompanyname.com') as Email_Updated,
* Inline [
ID, Email_Original
1, john_doe@test.com
2, jane_doe@test.com
3, Michael_Andrews@test.com
4, charlie_kent@test.com
5, frances_johnson@test.com
6, rebecca_smith@test.com
];
```

Resultados

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

* `ID`

* `Email_Original`

* `Email_Updated`

Tabla de resultados

| ID | Email\_Original | Email\_Updated |
| --- | --- | --- |
| 1 | john\_doe@test.com | john\_doe@newcompanyname.com |
| 2 | jane\_doe@test.com | jane\_doe@newcompanyname.com |
| 3 | Michael\_Andrews@test.com | Michael\_Andrews@newcompanyname.com |
| 4 | charlie\_kent@support.test.com | charlie\_kent@newcompanyname.com |
| 5 | frances\_johnson@test.com | frances\_johnson@newcompanyname.com |
| 6 | rebecca\_smith@hr.test.com | rebecca\_smith@newcompanyname.com |

## Ejemplo 2: script de carga para dar formato a códigos ISBN

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/ReplaceRegEx.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:

* Variables `ISBN_13` y `ISBN_10`, que almacenan las expresiones regulares a utilizar para los patrones de cadenas de 13 y 10 dígitos del ISBN, respectivamente.

* Una tabla `Employees` que contiene los valores numéricos brutos de los códigos ISBN de los libros. La tabla contiene tanto ISBN de 13 dígitos como de 10 dígitos.

* Varias operaciones para extraer cada parte del ISBN y, a continuación, devolver una cadena que muestre el código completo en el formato estándar esperado. Utilizamos una combinación de ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup(), y Pick().

Nuestros requisitos:

* Queremos dar formato a los números en un texto más legible, utilizando el formato normalizado:

  * ISBN ###-#-####-####-#

  * ISBN #-###-#####-#

Script de carga

```
Set ISBN_13 = '^([0-9]{3})([0-9]{1})([0-9]{4})([0-9]{4})([0-9]{1})$';
Set ISBN_10 = '^([0-9]{1})([0-9]{3})([0-9]{5})([0-9]{1})$';

Formatted_Codes:

Load
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_13)', '$(ISBN_10)'), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_13)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4 & '-' & ISBN_Component5), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_10)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4)) as ISBN_Formatted;

Load *,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 1, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 1, 1)) as ISBN_Component1,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 2, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 2, 1)) as ISBN_Component2,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 3, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 3, 1)) as ISBN_Component3,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 4, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 4, 1)) as ISBN_Component4,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 5, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 5, 1)) as ISBN_Component5
inline `
ISBN_Unformatted
1233123412340
0122012301234
0001012301232
0111234567
5552555555553
2224222222222
1901234568
3333333333333
5551515151513
2321232323231
2444444444
8880999900000
`;
```

Resultados

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

* `ISBN_Formatted`

Tabla de resultados

| ISBN\_Formatted |
| --- |
| ISBN 000-1-0123-0123-2 |
| ISBN 0-111-23456-7 |
| ISBN 1-901-23456-8 |
| ISBN 2-444-44444-4 |
| ISBN 012-2-0123-0123-4 |
| ISBN 123-3-1234-1234-0 |
| ISBN 222-4-2222-2222-2 |
| ISBN 232-1-2323-2323-1 |
| ISBN 333-3-3333-3333-3 |
| ISBN 555-1-5151-5151-3 |
| ISBN 555-2-5555-5555-3 |
| ISBN 888-0-9999-0000-0 |

## Ejemplo 3: expresión de gráfico para actualizar direcciones de correo electrónico secundarias

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

#### Gráfico de expresión 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 `Employees` que contiene las direcciones de correo electrónico de los empleados de una organización. Se almacenan en una única cadena para cada empleado, en la que se guardan varias direcciones de correo electrónico.

Nuestros requisitos:

* Las direcciones de correo electrónico secundarias deben actualizarse para utilizar el dominio `newcompanyname.com`. No queremos actualizar ninguna dirección de correo electrónico principal.

* Necesitamos utilizar operaciones regex que no distingan entre mayúsculas y minúsculas.

Script de carga

```
Employees:

Load * Inline [
ID, Emails
1, Primary: john_doe@test.com Secondary: john_michael_doe@example.com
2, Primary: jane_doe@test.com Secondary: jane_tabitha_doe_doe@example.com
3, Primary: Michael_Andrews@test.com Secondary: Michael_John_Andrews@example.com
4, Primary: charlie_kent@test.com Secondary: charlie_peter_kent@example.com
5, Primary: frances_johnson@test.com Secondary: frances_johnson@example.com
6, Primary: rebecca_smith@test.com Secondary: rebecca_danielle_smith@example.com
];
```

Resultados

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

* `ID`

* `Emails`

Añada la siguiente dimensión calculada:

```
=ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]*\.?[a-zA-Z0-9]*\.com','@newcompanyname.com',2)
```

Tabla de resultados

| ID | Emails | =ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]\*\.?example\.com','@newcompanyname.com',2) |
| --- | --- | --- |
| 1 | Primary: john\_doe@test.com Secondary: john\_michael\_doe@example.com | Primary: john\_doe@test.com Secondary: john\_michael\_doe@newcompanyname.com |
| 2 | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@example.com | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@newcompanyname.com |
| 3 | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@example.com | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@newcompanyname.com |
| 4 | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@example.com | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@newcompanyname.com.com |
| 5 | Primary: frances\_johnson@test.com Secondary: frances\_johnson@example.com | Primary: frances\_johnson@test.com Secondary: frances\_johnson@newcompanyname.com |
| 6 | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@example.com | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@newcompanyname.com |

Especificando un valor de 2 para el argumento occurrence, solo podremos actualizar la segunda instancia que coincida con el patrón regex.

## 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)