aabadcaa (?^:^((a*)b|a*b?d)*c\2$) No aababdcaa (?^:^((a*)b|a*b?d)*c\2$) No aabadcaa (?^:^(a*b?d|(a*)b)*c\2$) Yes aababdcaa (?^:^(a*b?d|(a*)b)*c\2$) Yes aabadcaa (?^:^((a*)b|a*b?d())*c\2$) No aababdcaa (?^:^((a*)b|a*b?d())*c\2$) No aabadcaa (?^:^(?|a*b?d()|(a*)b)*c\1$) No aababdcaa (?^:^(?|a*b?d()|(a*)b)*c\1$) No This is perl 5, version 38, subversion 0 (v5.38.0) built for x86_64-linux-thread-multi