[Python-es] Expresiones regulares: repeticiones de dos caracteres con longitud constante

Jesús Curbelo Rodríguez jescurbelo en gmail.com
Mie Ago 22 12:11:39 CEST 2012


El 22/08/2012 10:56, Juan Ignacio escribió:
> ¿Podría valerte este?
>
> ^A+B*$|^A*B+$
>
> Tendrías que comprobar en un test aparte que la longitud del string es N
>
> 2012/8/22 Jesús Curbelo Rodríguez <jescurbelo en gmail.com 
> <mailto:jescurbelo en gmail.com>>
>
>     Hola a todos,
>
>     Me ha surgido una duda intentando crear una expresión regular.
>
>     Supongamos que tenemos una lista de cadenas que cumplen las
>     siguientes condiciones
>
>       * La longitud de las cadenas es constante, digamos que de
>         longitud N.
>       * Las cadenas están formadas sólo por los caracteres A y B.
>       * Los caracteres A siempre están alineados a la izquierda.
>       * Los caracteres B siempre están alineados a la derecha.
>       * Los caracteres A pueden aparecer J veces, siendo 0<=J<=N.
>       * Los caracteres B pueden aparecer K veces, siendo 0<=K<=N.
>       * J y K son distintos para cada cadena pero siempre se cumple J
>         + K = N.
>       * Ejemplos, para N=5: AAAAA, AAAAB, AAABB, AABBB, ABBBB, BBBBB
>         (para N=5 no hay más posibilidades).
>
>
>     Cuando N es pequeño podemos poner todas las opciones como
>     alternativas, por ejemplo, para N=2 podemos usar la expresión
>     A{2}|AB|BA|B{2} . Pero para valores mayores de N esta forma de
>     proceder es inviable.
>
>     ¿Alguien conoce una expresión regular que se pueda usar para
>     cualquier valor de N?
>
>     Gracias de antemano.
>
>     Saludos.
>
>     Jesús Curbelo.
>
>
>     _______________________________________________
>     Python-es mailing list
>     Python-es en python.org <mailto:Python-es en python.org>
>     http://mail.python.org/mailman/listinfo/python-es
>     FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
> -- 
> Juan Ignacio Rodríguez de León
> Móvil: 605 890514
> E-Mail: euribates en gmail.com <mailto:euribates en gmail.com>
> http://www.metriz.com/
> http://descon2.com/
> http://www.elornitorrincoenmascarado.com/
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
Hola Juan Ignacio,

     La idea era que N apareciese explícitamente en la expresión 
regular. Pero me temo que es imposible sólo con expresiones regulares 
así que la solución que propones debe ser la correcta.

     Gracias por tu tiempo y saludos.

-- 
*Jesús Curbelo <mailto:jescurbelo en gmail.com>
/Quis custodiet ipsos custodes?/ *
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120822/2d70de5e/attachment.html>


Más información sobre la lista de distribución Python-es