>perl -wMstrict -le "$_ = 'no a START no b START yes c END maybe d END no e START yes f END'; my $S = qr{ START }xms; my $E = qr{ END }xms; my $not_S = qr{ (?! $S) . }xms; my $Lazy = qr{ $S $not_S*? $E }xms; print qq{'$_'}; print 'greedy: ', map qq{'$_' }, m{ $S $not_S* $E }xmsg; print 'lazy: ', map qq{'$_' }, m{ $S $not_S*? $E }xmsg; print 'compound: ', map qq{'$_' }, m{ $Lazy }xmsg; " 'no a START no b START yes c END maybe d END no e START yes f END' greedy: 'START yes c END maybe d END' 'START yes f END' lazy: 'START yes c END' 'START yes f END' compound: 'START yes c END' 'START yes f END'