¿Hay una manera de comprobar para ver si cada carácter único se produce la misma cantidad de veces? Soley utilizando el lenguaje de expresiones regulares o tengo uso de expresiones regulares y str.count para encontrar una coincidencia válida?
Esto es lo que estoy esperando que los resultados sean:
xy -> valid
xxyy -> valid
xxxyyy -> valid
xyy -> not valid
xxy -> not valid
Sé que puedo hacer algo como:
matches = re.match(r"^x+y+$", myTestStr)
Pero ¿hay alguna manera tengo el '+' ficha por 'x' es el mismo que el signo '+' ficha por 'Y'? También he intentado trabajar con grupos, pero no han tenido suerte allí tampoco.
Se podría usar recursividad para esto, pero para ser honesto, no es la mejor práctica para la tarea. Expresiones regulares no están destinados a ser recursivo. Y recursiion, por lo que yo recuerdo no se insluded en el standart nuevo módulo de Python. Creo que se necesita el regex
módulo a continuación,
Si está vacío se debe permitir:
\b(x(?1)y|)\b
si la cadena está vacía, no se debe permitir
\b(x(?1)y|(?<=x)(?=y))\b
demostración https://regex101.com/r/x0McMc/3
si tiene una longitud máxima fija de la cadena también se puede hacer esto (longitud máx 4 en el ejemplo):
\b(x{1}y{1}|x{2}y{2}|x{3}y{3}|x{4}y{4})\b
https://regex101.com/r/vMl8vv/2
pero esto se ve mal y dará lugar a una expresión regular masiva cuando la longitud es grande.