En esta lección aprenderemos otra técnica de búsqueda: búsqueda condicional. Esta es una de las construcciones más complejas que existen en las expresiones regulares y no es compatible con JavaScript y muchos otros lenguajes de programación.
En algunos lenguajes, es necesario tener en cuenta las peculiaridades de su implementación: Python admite la búsqueda condicional utilizando la agrupación con retroalimentación o grupos con nombre.
Esta construcción se asemeja al operador ternario de los lenguajes de programación y se ve así: (?ifthen|else).
Veamos cómo funciona en este ejemplo:
/(?(?<=a)m|p)/
mam,pap
Vemos paréntesis externos con ?, y dentro de ellos hay dos expresiones separadas:
- La primera es la condición
(?<=a). Verifica si el carácter a la izquierda esa. - Luego viene la alternativa. Elegimos entre
mypdependiendo de si se cumple la condición o no.
Podemos describir esta construcción de la siguiente manera: "Encuentra todas las m que están precedidas por a, o todas las p que no están precedidas por a".
Vamos a analizar la búsqueda en nuestra cadena carácter por carácter:
- Primero se verifica la condición: si el carácter actual es
my si hay unaantes de él. La condición no se cumple, así que intentamos extraerp, que tampoco es el carácter actual. - El segundo carácter
ano cumple las condiciones. Saltamos la subcadenamay verificamosm,pap. - El tercer carácter
mcoincide conm, y antes había una- hemos encontrado la primera coincidencia. - La coma en el cuarto carácter no cumple las condiciones. Saltamos la subcadena
mam,y verificamospap. - El quinto carácter
pno coincide conam, pero coincide conp- hemos encontrado la segunda coincidencia. - El sexto carácter
ainicia la verificación del siguiente carácter para ver si coincide conm. - El séptimo carácter
pno pasa la verificación para coincidir conm.
Así es como encontramos dos coincidencias en la cadena mediante la búsqueda condicional.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.