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 <[email protected] <mailto:[email protected]>>

    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
    [email protected] <mailto:[email protected]>
    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: [email protected] <mailto:[email protected]>
http://www.metriz.com/
http://descon2.com/
http://www.elornitorrincoenmascarado.com/


_______________________________________________
Python-es mailing list
[email protected]
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:[email protected]>
/Quis custodiet ipsos custodes?/ *
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a