>perl -wMstrict -le "for (@ARGV) { if(/^A (?: Z | (\s.*?)) Z$/x) { my $grabbed = $1 // ''; print qq{matched '$_' grabbed '$grabbed'}; } } " AZ AZZ AXZ "A SOMETHING Z" ASOMETHINGZ matched 'AZZ' grabbed '' matched 'A SOMETHING Z' grabbed ' SOMETHING '