¿Cómo puedo coincidir con una secuencia específica de caracteres sólo si la secuencia tiene la misma cantidad de caracteres en otra secuencia de expresiones regulares de Python?

Blanco Yisom :

¿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.

predicado:

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 regexmó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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=285040&siteId=1
Recomendado
Clasificación