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.

_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à