Muy buenas, soy Miguel y esta vez les traigo otro artículo.
Índice
Personajes repetidos
En nuestra última entrega, aprendimos cómo usar expresiones regulares para validar números de teléfono y correos electrónicos en un formulario. Estos problemas ilustran conceptos esenciales en expresiones regulares como hacer coincidir grupos, repetir dígitos y el orden de los caracteres. Para esta entrega, me voy a meter en la trampa de los personajes que se repiten en general.
‘match’ y ‘matchAll’
Para este artículo, presentaré dos métodos instrumentales de expresión regular que brindan información más valiosa que el método simple de «prueba». Si queremos saber algo más que verdadero (la expresión regular coincide) o falso (la expresión regular no coincide), podemos usar ‘match’ y ‘matchAll’. Match devuelve la primera subcadena coincidente que se encuentra junto con su índice en la cadena, mientras que ‘matchAll’ devuelve todas las subcadenas coincidentes junto con sus índices. Veamos un par de ejemplos.
Como se vio anteriormente, el método de coincidencia busca la primera parte de la cadena que cumple con los requisitos de expresión regular junto con su índice en la cadena. Desafortunadamente, una vez que el proceso encuentra la primera coincidencia, finaliza.
Como se puede ver arriba, el método matchAll devuelve un objeto de matrices de todas las coincidencias encontradas. Cada matriz contiene la coincidencia en sí, junto con el índice inicial de esa coincidencia. Algo que vale la pena destacar es la bandera ‘g’. La ‘g’ significa global. La bandera global indica al método que vaya más allá de la primera coincidencia y busque las expresiones en toda la cadena. Sin la bandera global ‘g’, ‘matchAll’ arrojará un error, como se ve arriba.
Por supuesto, podemos encontrar todas las coincidencias con la bandera global; sin embargo, el método habitual de «coincidencia» no proporciona tanta información sobre cada instancia.
Personajes que se repiten
Digamos que necesitábamos encontrar coincidencias para los caracteres repetidos. En artículos anteriores, ya hemos cubierto el caso de identificar un carácter repetido un número específico de veces. Sin embargo, para revisión, si queremos encontrar caracteres que se repiten, podemos especificar las longitudes precisas de las repeticiones, como se muestra a continuación.
Como se vio anteriormente, el método encuentra con éxito una coincidencia de tres a en una fila. Esta táctica es útil pero limitada. ¿Y si quisiéramos ir un paso más allá y encontrar algún personaje que se repita? Comencemos por ver si podemos encontrar algún carácter de palabra que se repita.
El código anterior presenta dos herramientas más que necesitan explicación: capturar grupos y retroceder. De nuestros artículos anteriores, podemos ver por los corchetes que esta expresión regular busca cualquier carácter de palabra. Sin embargo, el paréntesis los convierte en un «grupo de captura».
Captura de grupos y seguimiento
¿Qué es un grupo de captura? Un grupo de captura le dice al método que capture los caracteres coincidentes como un grupo para su uso posterior. Sin el paréntesis del grupo de captura, el método olvida el patrón encontrado.
¿Qué es retroceder? El retroceso le dice al motor de expresiones regulares que «mire hacia atrás» en una coincidencia anterior para encontrar más coincidencias. En este caso, estamos capturando cualquier carácter de palabra como grupo; luego, el símbolo de retroceso le dice al motor que busque una repetición del grupo de captura.
En consecuencia, el paréntesis del grupo de captura en combinación con el símbolo de retroceso nos permite encontrar una repetición no de cualquier carácter de palabra sino de un carácter de palabra específico. Examinemos el siguiente código para ver qué significa esto.
La primera línea de “4567892” devuelve una matriz vacía porque todos los dígitos de la cadena son únicos. La segunda línea encuentra tres casos de dígitos particulares que se repiten. 4, 9 y 3. Solo verifica que el dígito repita uno y luego se detiene.
La captura de grupos es beneficiosa y versátil. Podemos usarlos para encontrar patrones de caracteres repetidos más complejos: el código siguiente ilustra otra aplicación para capturar grupos.
Como se vio arriba, la expresión regular tiene un grupo de captura ‘boo’ modificado por el carácter más. La combinación de estos dos medios busca que el patrón de caracteres ‘boo’ se repita una o más veces. Mirando los resultados de ‘matchAll’, devuelve ‘boo’ y ‘boobooboo’. Esto es genial, pero podemos dar un paso más. En este código a continuación, buscamos repeticiones no solo de un carácter sino de un patrón de caracteres.
Ahora el patrón repetitivo se vuelve más complicado. Usamos el carácter ‘más’ para buscar repeticiones no solo de ‘o’ sino del grupo de captura en sí. El método de expresión regular busca cualquier ‘boo’ con repetición de ‘o’ así como repetición (boo).
Sin embargo, ¿qué pasaría si estuviéramos interesados en encontrar caracteres que se repitan, no solo caracteres de palabra? Con el uso de ‘.’ carácter comodín, esto es posible.
Conclusiones clave
- Global Flag (Bandera global): la bandera global indica al método que realice una búsqueda global. Una búsqueda global prueba todas las posibles coincidencias en una cadena
- ‘.’ wildcard (‘.’ comodín): el. carácter coincide con cualquier carácter individual en una cadena. Su análogo más cercano es la carta comodín en una baraja de póquer.
- ‘match’: Match busca la primera subcadena que coincide con el patrón de la expresión regular. Con una bandera global, devuelve una matriz de coincidencias sin otra información.
- ‘matchAll’: este método busca búsquedas de coincidencias de expresiones regulares a nivel mundial. Luego devuelve una matriz con las coincidencias y el índice en el que se encontraron.
- Capturing Groups (Capturar grupos): el uso de paréntesis alrededor de un patrón crea un grupo de captura. Un grupo de captura captura el texto que coincide con el patrón y lo guarda en un grupo numerado que se puede reutilizar con una referencia inversa numerada.
Gracias por leer.
Añadir comentario