#! perl -slw use strict; my @examples = qw[ AB23C ABC23 23BC ABC ]; m[([A-Z]*)([0-9]*)([A-Z]*)] and printf "%s: '%s', '%s', '%s'\n", $_, $1//'', $2//'', $3//'' for @examples; __END__ C:\test>1148522 AB23C: 'AB', '23', 'C' ABC23: 'ABC', '23', '' 23BC: '', '23', 'BC' ABC: 'ABC', '', ''