use strict; use warnings; $_ = 'stuffABC Xmorestuff'; if (/((A(?:B(?:C(?:\s+(?:X(?:Y(?:Z)?)?)?)?)?)?))/) { print "Searched for 'ABC\\s+XYZ' but only found $1"; } #### use strict; use warnings; $_ = 'stuAffABC XmoresABtuff'; my $longest = ''; while (/((A(?:B(?:C(?:\s+(?:X(?:Y(?:Z)?)?)?)?)?)?))/g) { $longest = $1 if length($1) > length($longest); } print "Searched for 'ABC\\s+XYZ' but only found '$longest'\n"; __END__ Searched for 'ABC\s+XYZ' but only found 'ABC X'