#!/usr/bin/perl use strict; #use warnings; for my $regexp ( qr/^((a*)b|a*b?d)*c\2$/, qr/^(a*b?d|(a*)b)*c\2$/, qr/^((a*)b|a*b?d())*c\2$/, # NOTE these two fixed to work the way qr/^(?|a*b?d()|(a*)b)*c\1$/, # I think they should work ) { for my $string (qw( aabadcaa aababdcaa )) { print "\n$string\n$regexp\n"; print $string =~ /$regexp/ ? 'Yes' : 'No', "\n"; } } print <