>perl -wMstrict -le "my $s = 'aaxbbbxccccxddxex'; ;; printf qq{'$_' } for $s =~ m{ [a-e]+ x }xmsg; print ''; ;; printf qq{'$_' } for $s =~ m{ [bd]+ (*SKIP)(*FAIL) | [a-e]+ x }xmsg; print ''; ;; printf qq{'$_' } for $s =~ m{ (?: [bd]+ (*SKIP)(*FAIL))? [a-e]+ x }xmsg; print ''; " 'aax' 'bbbx' 'ccccx' 'ddx' 'ex' 'aax' 'ccccx' 'ex' 'aax' 'ccccx' 'ex'