m{ A (?: [^AB]+ | .B )* [^AB]* A }x;