my $re2 = qr{ (? . ) (?= (? (?<= (?! \g{char} ) . (?=(?&lookback)) . | (?= \g{char} ) . . ) ) ) }msx; my $re2_short = qr /(.)(?=((?<=(?!\1).(?=(?-1)).|(?=\1)..)))/sx;