|

jueves, 4 de julio de 2013

Reemplazando caracteres especiales en KETTLE

A regexp to match regexp
El step Replace in String nos simplifica bastante la limpieza de información, y más, si se utiliza para realizar reemplazos utilizando expresiones regulares.  Tal vez queremos borrar los caracteres especiales de una cadena de texto (Al día de hoy la definición exacta de caracter especial sigue siendo una incógnita).  Sería engorroso escribir una regla, que reemplace por una cadena vacía cada carácter especial que existe.  En este caso sería mas fácil decirle que reemplace un conjunto de caracteres por la cadena vacía. Aquí es donde la expresiones regulares entran en el juego.

Con una expresión regular básica podemos podemos definir un conjunto de caracteres. En la Internet encontramos una expresión regular muy común, la cual representa caracteres alfanuméricos:

[0-9A-Za-z] 

Esta expresión sería suficiente por ejemplo para representar nombres de personas en países anglosajones, pero como hispano parlantes, sería suficiente para representar nombres propios como ¿EDUARDO NUÑEZ RODRÍGUEZ? De nuestro idioma hacen parte diacríticos y la letra Ñ, así las tecnologías de la información estimulen su desuso.

Así que mi versión de caracteres NO ESPECIALES (Incluyendo el espacio en blanco) sería la siguiente:

[0-9A-Za-zÁÉÍÓÚáéíóúÑñ ]

Entonces los caracteres ESPECIALES serían todos que aquellos que esten por fuera de este conjunto, y esto lo podemos hacer anteponiendo el caracter ^:

[^0-9A-Za-zÁÉÍÓÚáéíóúÑñ ]

Con una variación de esta expresión regular, podríamos en una sola instrucción del Replace in String, borrar todos los caracteres distintos a los especificados.

Nuestra transformación constará simplemente de un Generate Rows para realizar un caso de prueba y un Replace in String:


El paso Generate Rows, generará 10 filas, con la columna CADENA, todas con el valor a limpiar ANA@ M@RÍA #ROJAS HERNA&NDEZ''''''''''''''''


El paso Replace in String, elegiremos realizar la operación sobre la columna CADENA, habilitamos la opción useRegEx (Y), en Search escribimos nuestra expresión regular [^0-9A-Za-zÁÉÍÓÚáéíóúÑñ ] y en Replace With dejamos vacío.


Guardando la transformación y haciendo una previsualización, el valor en la columna CADENA quedó como ANA MRÍA ROJAS HERNANDEZ.


Al cambiar la expresión regular por [0-9A-Za-zÁÉÍÓÚáéíóúÑñ ] obtendremos el resultado contrario:


Podemos cambiar nuestra expresión para aceptar otros caracteres comunes como el ampersand (&) o la cedilla (Ç), o utilizar la expresion [^0-9] para borrar todos los caracteres no numéricos. Les aconsejo el siguiente link http://www.w3schools.com/jsref/jsref_obj_regexp.asp para conocer un poco más de las Expresiones Regulares.

¡Exitos y Buena Suerte!


..

1 comentario:

  1. Creo que deberías ser un poquito más claro en tu forma de explicar; más sencillo. Al menos yo no entendí. Jeje. Pero hay que tomar en cuenta que soy un novato en esto. Quizá tengo que leerlo una o dos veces más para entenderlo.

    ¡Saludos!

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...