my @a = qw( fred bob joe jim mary elaine ); my @b = qw( frank joe jim mary bob ); my $str = join(" ", @a) . "&" . join(" ", @b); if ($str =~ /(?:\b\w+\b\s*)+? ((?:\b\w+\b\s*)+) (?:\s*\b\w+\b\s*)+? & (?:\b\w+\b\s*)+? \1 (?:\s*\b\w+\b)+?/x) { my $result = $1; $result =~ s/\s*$//; print "found '$result'\n"; }