@match = /X\d.+?(?=X\d|$)/g; #### $_ = "X1aaX2bbX3heeX4...X5loveUX6XXXX7X8" ; my @match = split /(X\d)/; print "String: " . $_; foreach my $word (@match){ print $word; print "\n" unless $word =~ /X\d/; }