my $str = 'A2ABA45'; my @parts = $str =~ /A[^A]*/g; #### my @parts = split /(?=A)/, $str; #### use Data::Dumper; my @parts = split /(A.+?)(?=A|$)/, "A2ABA45"; print Dumper(\@parts); #### my @parts = split /(-)/, "-1-2-"; print Dumper(\@parts);