La classe Pattern possède deux autres méthodes split() particulièrement utiles pour la décomposition d'une chaîne de caractères selon un séparateur de valeurs.

Contrairement à la méthode split() de la classe String, un argument de limite peut favoriser la récupération de valeurs vides.

Exemple [voir]
import java.util.regex.Pattern;

public final class RegExp {
    public static void main(String[] args) {
        String chaine = 
              "#numero;service;nom;prenom;adresse;"
                            + "telephone;portable;fax;salaire\n"
            + "A0025DE;DRH;Dunord;Jean;1a rue des Péchés "
                            + "75000 Paris;0145827421;;;\n"
            + "B1241AB;Direction;Angel;Julie;145 avenue Dausmesnil "
                    + "75000 Paris;0121127842;0664157862;0121127844;\n";
        RegExp rPos = new RegExp(8);
        RegExp rZero = new RegExp(0);
        RegExp r = new RegExp();
        RegExp rNeg = new RegExp(-8);

        String[] lignes = r.decomposition(chaine, "\n");
        executer(rPos, lignes);
        executer(rZero, lignes);
        executer(r, lignes);
        executer(rNeg, lignes);
    }
    public static void executer(RegExp re, String[] lignes) {
        for (int i = 0; i < lignes.length; i++) {
            if(lignes[i].length() < 1 
            || Pattern.matches("#.*", lignes[i])) continue;
            System.out.println("Cible : " + lignes[i]);
            System.out.println("Limite : " + re.limite);
            String[] valeurs = re.decomposition(lignes[i], ";");
            re.afficher(valeurs);
        }
    }
    public int limite;
    public RegExp(int limite) {
        this.limite = limite;
    }
    public String[] decomposition(String chaine, String separateur) {
        Pattern modele = Pattern.compile(separateur);
        String[] valeurs = modele.split(chaine, this.limite);
        return valeurs;
    }
    public void afficher(String[] valeurs) {
        System.out.println("Nombre de valeurs : " + valeurs.length);
        for(int i = 0; i < valeurs.length; i++) {
            System.out.println("\"" + valeurs[i] + "\"");
        }
        System.out.println();
    }
}