my @can = ('NNAN', 'BPPAN','ANPN', 'NNAPN'); foreach $value (@can) { if ( $value =~ m/^((A|N)+|((A|N)*(NP)?)(A|N)*)N/ ) { print "match: $value\n"; } }