[OSM-talk-fr] Regexp pour valider un nom de commune française

Charles Nepote charles at nepote.org
Mar 28 Mar 12:32:57 UTC 2017


Bonjour à tous,


Un peu hors-sujet mais ça pourrait aider les outils de contrôle qualité 
d'OSM.
Dans les divers outils et process informatiques il n'est pas toujours 
possible d'aller appeler la BAN pour vérifier le nom d'une commune.
Je cherche donc à vérifier a minima la syntaxe d'un nom de commune à 
travers une regexp. J'ai produit la regexp suivante qui passe mes tests 
sauf qu'elle me semble un peu trop permissive. Toute remarque ou aide 
appréciée :)
(J'ai utilisé la forme "extended" qui permet d'étaler la regexp sur 
plusieurs lignes et de la commenter.)

/
^
(                           # Débute par un article
   Le\ |La\ |Les\ |Los\ |Aux\ |L'
   |                         # ou
)                           # rien

([A-ZÉÇŒÈÎ])                # Suivi d'une majuscule

(                           # puis ...
  ((-|                       #   un trait-d'union ou
   \ |                       #   un espace ou
   \ -\ |                    #   un espace suivi d'un trait d'union 
suivi d'un espace ou
   ')                        #   une apostrophe
   [A-ZÉÇŒÈÎ])               #   suivi d'une majuscule
  |                          #   ou bien
  ('|-|\ |)                  #   une apostrophe ou un trait-d'union ou 
un espace ou rien
   [a-zàâéèêëïîÿôûüœç]       #   suivi d'une minuscule
)*                          # 0 ou plusieurs fois

(                           # terminé par
   \ \([A-Z][a-z]*\)         # un espace suivi d'un mot entre parenthèse 
débutant par une majuscule
   |                         # ou
)                           # rien
$
/gmx                        # global, multiline, extended

Vous pouvez la retrouver et la tester ici : https://regex101.com/r/knDFaB/4

J'ai listé ci-dessous des cas de tests invalides, théoriques et valides.

*Invalides**
*AA
NNouvelle
A'
Nouvelle'
A-
Nouvelle-
AA'
AA-
NNouvelle'
NNouvelle-
-Ville
--Ville
'Francheville
''Francheville
A''ville
L''Épine
A--Ville
Nouvelle--Ville
A  Ville
Nouvelle  Ville
A'-Ville
Nouvelle'-Ville
A-'Ville
Nouvelle-'Ville
A' Ville
Nouvelle' Ville
A- Ville
Nouvelle- Ville
Nouvelle-es- Ville
Saint-Martin-es- Ville
AAA
AaA
A  a
A  A


*Théoriques ???**
*A A
A'A
A-A
Nouvelle'Ville


*Valides (communes existantes)**
*Marseille
Saint-Remy-en-Bouzemont-Saint-Genest-et-Isson
Saint-Martin-d'Hères
Hœdic
Saint-Genis
Y
Ay
Bû
Oô
Aast
Niederschaeffolsheim
Kermoroc'h
M'tsangamouji
L'Île-Rousse
L'Épine
Le Mans
La Celle-Saint-Cloud
Le Pont-de-Beauvoisin
Hitiaa O Te Ra
Saint-Nom-la-Bretèche
Saint-Germain-de-Tallevende-la-Lande-Vaumont
Beaujeu-Saint-Vallier-Pierrejux-et-Quitteur
Île-aux-Moines
Île-d'Aix
Château-Chinon (Campagne)
Château-Chinon (Ville)
Noirmoutier-en-l'Île
Aix-Villemaur-Pâlis
La Chapelle du Lou du Lac
Saint-Thégonnec Loc-Eguiner
Val d'Arcomie
Ance Féas
Le Bas Ségala
Le Haut Soultzbach
Bairon et ses environs
Dhuys et Morin-en-Brie
Parves et Nattages
Haut Valromey
Saint Paterne - Le Chevain
Pont de Montvert - Sud Mont Lozère
Saint Géry-Vers
Villages du Lac de Paladru
Bagnoles de l'Orne Normandie
Cœur de Causse
Beauce la Romaine
Les Hauts d'Anjou
Les Pechs du Vers
Segré-en-Anjou Bleu
Ingrandes-Le Fresne sur Loire
Montrichard Val de Cher


Charles.

-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20170328/797f4748/attachment.html>


Plus d'informations sur la liste de diffusion Talk-fr