[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