my $string = "A BC 1 23DEF45 6"; my @parts = split /(?:\s+|(?<=\d)(?=[A-Z])|(?<=[A-Z])(?=\d))/i, $string; foreach my $part (@parts) { print "part = $part\n"; }