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"; }