/^ab?(c|d)$/ => qw( abc abd ac ad ) #### perl -e '""=~/(?{a})(?{$^R.b})?((?{ $^R.c})|(?{ $^R.d}))(?{print "$^R\n"})(?=a)(?!a)/' # output: abc abd ac ad #### #!/usr/bin/perl -w #orig: reg(ular\s+)?exp?(ression)?!*? #mod: ^reg(ular_+)?exp?(ression)?!{0,3}? no warnings 'regexp'; # zero-length + quantifier 'aa' =~ /^ (?{'reg'}) ( (?{ $^R.'ular'}) (?: (?{ $^R."_" }) a )+ )? (?{ $^R.'ex'}) (?{ $^R.'p'})? ((?{ $^R.'ression'}))? (?: (?{ $^R."!" }) a ){0,3}? (?{print "$^R\n"; }) (?=a)(?!a) # fail /x; __END__ #### $ ./genex.pl regular__expression regular__exp regular__exression regular__ex regular_expression regular_expression! regular_exp regular_exp! regular_exression regular_exression! regular_ex regular_ex! regexpression regexpression! regexpression!! regexp regexp! regexp!! regexression regexression! regexression!! regex regex! regex!!