A vue de nez, quelque chose comme ça devrait permettre de faire ce que tu veux.
(?<titre>.+\s)?(?<nom>[A-Z'\-]+)\s(?<prenom>[A-Za-z'\-]+)\s(?<num>\d\w*\s)?(?<cp>\d{5})\s(?<localite>.+)
Après pour l'utiliser
1 2 3 4 5 6 7 8 9 10 11
| string pattern = @"(?<titre>.+\s)?(?<nom>[A-Z'\-]+)\s(?<prenom>[A-Za-z'\-]+)\s(?<num>\d\w*\s)?(?<cp>\d{5})\s(?<localite>.+)";
string input = "M. SUPER-DUPONT Thierry 34bis 12345 MonTrouPerdu";
// A faire pour chaque ligne du fichier à traiter
Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase);
string titre = m.Groups["titre"].Value.Trim(); // Trim nécessaire pour enlever l'espace de fin si la valeur est présente
string nom = m.Groups["nom"].Value;
string prenom = m.Groups["prenom"].Value;
string num = m.Groups["num"].Value.Trim(); // Trim nécessaire pour enlever l'espace de fin si la valeur est présente
string cp = m.Groups["cp"].Value;
string localite = m.Groups["localite"].Value; |
A mettre en application pour vérifier si cela marche correctement dans tous les cas que tu peux rencontrer.
Partager