Imagínese esto: usted es un intrépido explorador de datos, aventurándose en las profundidades de la indómita naturaleza de los datos sin procesar. Armado con su confiable hoja de cálculo y una taza de café, se embarca en una búsqueda para extraer información significativa. Pero, por desgracia, lo que encuentra es una jungla de formato inconsistente, símbolos crípticos y errores tipográficos que parecen tener vida propia. No temas, intrépido organizador de datos, porque en este caótico reino te espera un arma secreta: expresiones regulares , la capa de superhéroe de la limpieza de datos.
¿Qué es una expresión regular?
En esencia, una expresión regular, comúnmente conocida como expresiones regulares , es una potente secuencia de caracteres que define un patrón de búsqueda. Es una herramienta versátil utilizada en varios lenguajes de programación y editores de texto para manipular y unir cadenas de texto basado en patrones o reglas específicas . Las expresiones regulares le permiten expresar patrones de búsqueda complejos de manera concisa, lo que facilita la búsqueda, extracción o modificación de partes específicas de los datos de texto. Al combinar caracteres, metacaracteres y cuantificadores, puede crear patrones de expresiones regulares que coincidan con secuencias específicas, caracteres o incluso estructuras más complejas dentro de un cuerpo de texto más grande. Con su amplia gama de aplicaciones, las expresiones regulares se han convertido en un recurso invaluable para tareas de limpieza de datos, procesamiento de texto y reconocimiento de patrones.
Regex en JMP
Dentro de JMP, se accede a las expresiones regulares y se personalizan a través del triángulo rojo ubicado en Explorador de texto -> Opciones de análisis -> Personalizar Regex. Varias expresiones regulares están disponibles para su uso, como la Capturador de enlaces HTML y el Números resaltador

Puede personalizar las expresiones regulares dentro de JMP.
Si bien las expresiones integradas son útiles, la limpieza de datos puede requerir expresiones más personalizadas que se adapten mejor al conjunto de datos. Veamos un ejemplo simple como eliminar todos los números en una cadena de texto. La expresión regular '\d+' realizará esta tarea. Esta expresión utiliza la '\d' metacarácter para hacer coincidir todos los dígitos (0-9), y el '+' cuantificador para indicar que uno o más dígitos deben coincidir. Si aplicamos esta expresión regular a la cadena "Tengo 5 manzanas y 10 naranjas", se identificarán los números "5" y "10". Al reemplazar estos dígitos con una cadena vacía, ha limpiado efectivamente sus datos de todos los números presentes.
Analicemos el Capturador de enlaces HTML para explicar un ejemplo más complejo. Esta expresión regular integrada en JMP es la siguiente:
<A>]*?)\3[^>]*)|(\s*[a-z]+\s*=\s*('|")([^>]*?)\6))*\s*></A>
Cada parte significativa de la expresión anterior se resume en la siguiente tabla:
| '
| Este metacarácter busca la etiqueta de anclaje de apertura en HTML que significa un hipervínculo. |
| 'href\s*=\s*('|")' |
Esta sección coincide con el atributo "href" seguido de un signo igual y espacios opcionales, luego una comilla simple (') o una comilla doble ("). Captura la cita de apertura en una referencia inversa. |
| '([^>]*?)' |
Esto coincide con cualquier carácter que no sea el corchete angular de cierre (>). Lo más importante es que captura la URL, que es el propósito principal de esta expresión. Tenga en cuenta que esta sección es similar a especificadores de formato en programación C. |
| '(\s*[az]+\s*=\s*('|")([^>]*?)\6)' |
Este patrón coincide con cualquier atributo adicional dentro de la etiqueta de anclaje. Captura el nombre del atributo, un signo igual, espacios opcionales, el valor del atributo (entre comillas) y garantiza que la comilla de cierre coincida con la comilla de apertura. |
(Ver Personalice Regex en el Editor de expresiones regulares (jmp.com) para más información)
Si bien estos atributos y patrones pueden parecer complejos, hay mucha documentación y recursos disponibles para aprender y comprender lo que representa cada bandera.
Aplicación de expresiones regulares
Entonces, ahora que sabemos exactamente qué es y qué puede hacer regex, ¿dónde es más útil?
Bueno, es difícil reducirlo a una sola aplicación, pero lo guiaré a través de un ejemplo de filtrado de datos que hice para un proyecto de análisis de texto que cubre datos de la sección de discusiones de la comunidad de usuarios de JMP. El objetivo final de este proyecto era encontrar los términos y frases más utilizados publicados en los debates de la comunidad de usuarios.
A continuación se muestra un ejemplo de solo uno de más de cuarenta y ocho mil comentarios de discusión. Tenga en cuenta que el formato HTML y secuencias de comandos JSL hacen que sea muy difícil determinar el vocabulario que se utiliza en el comentario original.

Muestra de datos antes de la limpieza de expresiones regulares.
La limpieza de estos términos y el formateo manual pueden tardar meses o incluso años en completarse, pero con el uso de unas pocas expresiones regulares, la limpieza se puede realizar de forma instantánea.
Para empezar, quería eliminar cualquier contenido del lenguaje de secuencias de comandos JSL dentro de la discusión. Para lograr esto, utilicé la siguiente expresión regular:
<CODE class=" language-jsl">[\s\S]*?<\/CODE>|
|((([€¥₩£\$]|r\$)\s{0,2}[\.,]?[0-9][\.,0-9]*)|([\.,]?[0-9][\.,0-9]*\s{0,2}([€¥₩£\$]|r\$)))
A continuación, quería eliminar las etiquetas de formato HTML y CSS de los datos:
<[^>]*>
Finalmente, quería eliminar cualquier número, decimal y palabra que contenga números:
\d+(\.\d+)?|\.\d+
Mirando el mismo mensaje de muestra original, puede ver a continuación cómo cada expresión filtra los parámetros especificados:

Datos filtrados. Las palabras que no se filtran se resaltan en amarillo.
Explorando los resultados
Una vez que hemos terminado de filtrar nuestras expresiones personalizadas, ¿cómo cambian nuestros resultados? Veamos las comparaciones en paralelo de las nubes de palabras para el conjunto de datos sin procesar y sin filtrar frente al conjunto limpio de expresiones regulares:
VIEJO (Sin expresiones regulares)
|
NUEVO (Con expresiones regulares)
|

|

|
Tenga en cuenta que antes de usar expresiones regulares, los datos se llenan con formato HTML, formato JSL y contenido completamente no relacionado. Para el propósito de mi análisis, estos datos son completamente irrelevantes. Después de emplear expresiones regulares, los datos son mucho más útiles para el análisis y pueden proporcionar resultados muy interesantes con un poco más de trabajo.
La realización de un análisis de temas sobre los datos limpios proporcionó algunos resultados muy interesantes sobre qué temas se responden con mayor frecuencia dentro de la comunidad, que se muestran a continuación.

Análisis de cinco temas sobre datos de debates
Los cinco temas proporcionados se pueden generalizar en diferentes categorías de preguntas sobre las que los usuarios pueden estar preguntando:
- Tema #1: Diseño de Experimento (DOE)
- Tema n.º 2: Modelado predictivo y aprendizaje automático
- Tema #3: Respuestas instructivas
- Tema #4: Formato y análisis de datos
- Tema #5: Programación y Scripting
Coincidencia de texto de columna Regex
Las expresiones regulares no se limitan a la aplicación desde una ventana de Exploración de texto; también puede acceder a ellos al crear una nueva columna de datos con una fórmula de cadena. Para acceder a esto, vea Cols -> Utilities -> New Column by Text Matching.

Regex está disponible en cualquier columna de texto de un archivo JMP.
Al seleccionar "Nueva columna por coincidencia de texto", se abrirá la misma ventana del editor de expresiones regulares que en el Explorador de texto. Todo el proceso de curación de datos es exactamente el mismo, sin embargo, su texto filtrado ahora se formateará automáticamente en una nueva columna, como se muestra en la imagen a continuación:

El mismo proceso se muestra fuera de una ventana del Explorador de texto.
Pensamientos finales
Las expresiones regulares son una herramienta indispensable en el ámbito de la exploración de datos. Ofrecen una solución versátil para manipular y hacer coincidir cadenas de texto con el resultado deseado. Con expresiones regulares, podemos desbloquear todo el potencial de nuestros datos.
Para obtener más información sobre expresiones regulares, consulte:
Personalice Regex en el Editor de expresiones regulares (jmp.com)
cuantificadores en expresiones regulares | aprender
Referencia de expresiones regulares (regular-expressions.info)
Función Regex (jmp.com)
Ayuda JMP