#Explicación de la regex del reto 11
1 messages · Page 1 of 1 (latest)
La regex busca regalos * que no tengan cámaras # en las 4 direcciones. Cada parte comprueba una dirección:
- (?<!#) → no hay cámara a la izquierda
- (?<!#(.{w})) → no hay cámara arriba (salto de una fila = .{w})
- * → estamos en un regalo
- (?!#) → no hay cámara a la derecha
- (?!.{w}#) → no hay cámara abajo
La clave es que w es el ancho del tablero, así que .{w} sirve para saltar exactamente una fila completa. Es la traducción directa de un regalo sin cámaras adyacentes usando lookarounds.
Y si alguien prefiere unir el tablero con join('\n') en vez de join(), entonces tiene que usar también el flag s (dotAll), porque así el . de la regex puede atravesar el salto de línea y seguir funcionando como un carácter más.