26/02/2014, 11:48
|
|
Respuesta: Que hace esta expresion regular La sintaxis "?=" es sintaxis extendida de expresiones regulares, y hace lo que se conoce como "look ahead" (mirar hacia adelante). En la práctica funciona como un condicional, y la expresión dentro del look ahead NO consume caracteres de la cadena. El motivo por el que no funciona es que la expresión
^(?=aa)b
quiere decir, aproximadamente: "busca una b al principio de la cadena SOLAMENTE si la misma comienza con "aa". Como el look ahead no consume caracteres, tanto éste como la "b" quedan asociados al ancla ^. La cadena "aab" pasa la prueba del look ahead, pero no coincide con la expresión porque no comienza con una b. Rápidamente podemos concluir que ninguna cadena coincide con ese patrón, porque tiene el doble requisito de comenzar con una b y con "aa".
Usa el patrón que te sugiere paketetrueke, ese sí hace lo que necesitás.
Dicho sea de paso, ¿no estarías queriendo usar "?:" en vez de "?="? La forma ?: denota un grupo que no captura los datos que coinciden, puede ser más eficiente.
Saludos. |