De correspondance de plusieurs modèles regex avec l'alternance de l'opérateur?

J'ai rencontré un petit problème à l'aide de Python Regex.

Suppose que c'est le d'entrée:

(zyx)bc

Ce que je suis en train de réaliser est d'obtenir tout ce qui est entre parenthèses comme un seul match, et tout char de l'extérieur comme un match individuel. Le résultat souhaité serait d'être le long des lignes de:

['zyx','b','c']

L'ordre des matchs doivent être conservés.

J'ai essayé de l'obtention de ce avec Python 3.3, mais n'arrive pas à trouver le bon Regex. Pour l'instant j'ai:

matches = findall(r'\((.*?)\)|\w', '(zyx)bc')

print(matches) les rendements suivants:

['zyx','','']

Les idées de ce que je fais mal?

Pourquoi ne pas simplement xyz|a|b?
C'était juste un exemple d'entrée. L'expression régulière doit être en mesure de distinguer les différents cas, par exemple (ab)(bc), (ca), abc (abc)(abc)(abc), ou (zyx)bc, etc, tout en reconnaissant les caractères qui sont à l'intérieur de parenthèses et qui ne le sont pas.

OriginalL'auteur Julian Laval | 2013-01-06