Regex: faire correspondre des groupes dans un ordre différent sans répéter le groupe

Disons que j'ai deux chaînes de caractères comme ceci:

XABY
XBAY

Une simple expression régulière qui correspond à la fois irait comme ceci:

X(AB|BA)Y

Cependant, j'ai un cas où A et B sont des complexes de chaînes, et je suis à la recherche d'un moyen pour éviter d'avoir à spécifier chacun d'entre eux à deux reprises (de chaque côté de la |). Est-il un moyen de le faire (c'est sans doute plus simple que d'avoir à les spécifier deux fois)?

Grâce

source d'informationauteur Jimmy