>>120
とりあえずこんなもんか。

A, B, C = "ab", "ba", "ca"
re = /#{A}((?!#{A}|#{B}|#{C}).)*#{B}((?!#{A}|#{B}|#{C}).)*#{C}/