Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/05/2013, 10:40
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con alternado de caracteres

La mejor forma de explicar lo que buscas es con frases, ya que igualmente la lógica gobierna en las expresiones, algo así:

- Que acepte [ab] en minúsculas
- Que no existan repeticiones de [ab] inmediatamente
- Que permita la [Y] en cualquier posición y con repeticiones

Pienso que esas frases definen muy bien lo que estás buscando, sin embargo no es tan sencillo como parece, lo digo porque para evitar las repeticiones debes usar los grupos para "mirar" hacia adelante y hacia atrás y se puede tornar complejo.

Entonces, siguiendo la regla de que lo más simple debería funcionar y además de que la lógica se puede negar llegamos a esto:
Código PHP:
Ver original
  1. $t = 'ababab abYab YYYabab aabaa';
  2.  
  3. $s = preg_split('/\s+/', $t);
  4.  
  5. $r = '/(a|b)(?=\\1)/';
  6.  
  7. foreach ($s as $z) {
  8.  
  9.     $m = preg_match($r, $z);
  10.     echo "- $z : $m\n";
  11.  
  12. }

Lo cual únicamente hace el matching de la repetición de [ab] con lo cual podemos descartar el ultimo valor "aabaa" negando lo que devuelve preg_match(), que para cuestiones practicas "resuelve" el problema.

Espero que eso te sirva un poco, más tarde hago el ejercicio completo a ver si consigo una expresión que valide todos los casos, a ver si no me vuelvo loco.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.