Pages: 1
- Sujet précédent - StringSearcher ou StringReplacer avec expression regulière - Sujet suivant
#1 Fri 13 October 2023 12:35
- Benoit91
- Participant assidu
- Date d'inscription: 2 Oct 2008
- Messages: 263
StringSearcher ou StringReplacer avec expression regulière
Bonjour
Dans le cadre d'un projet, j'ai un workbench qui se connecte à une base de données MySQL qui récupère les données d'un formulaire en ligne. Ce formulaire permet aux administrés de faire une demande d'enquête de conformité assainissement. (pour prise de rdv)
En base de données je récupère un champ concaténant les longitudes, latitudes et adresse postale du logement faisant l'objet de la demande d'enquête.
Les valeurs sont de ce type:
48.60753671553298|2.320638656583469|19 Rue Clément Ader 91220 Brétigny-sur-Orge
48.6469|2.3196|35bis Rue des Ecoles 91700 Sainte-Geneviève-des-Bois
48.6118|2.3248|7 Avenue Gilbert Fergant 91220 Le Plessis-Pâté
Je souhaite isoler/récupérer les coordonnées géographiques x et y, l'adresse et le code postal+la commune (soit découper le champ initial en 4 champs d'info)
j'utilise ces expressions:
Pour longitude => 2[.][0-9]*
Pour Latitude => 48[.][0-9]*
Pour le code postal+la commune =>[0-9]{5} [a-zA-Zéèêàâù-]* (A peaufiner car je ne récupère pas l'info pour "91220 Le Plessis-Pâté" - Si vous avez une solution je suis preneur :-) )
N'étant pas un pro des expression régulières, est-ce possible de récupérer directement la partie adresse ?
Si oui comment ?
et si non, je procèderai par suppression successives des coordonnées et code postal+commune.
En espérant avoir été suffisamment clair et merci d'avance.
Hors ligne
#2 Fri 13 October 2023 15:28
Re: StringSearcher ou StringReplacer avec expression regulière
Bonjour,
Pour les coordonnées et étant donné qu'il y a un delimiteur |, utilisez AttributeSplitter pour le découper et générer une liste dont les deux premiers index seront vos coordonnées.
L'application ne pourrait pas ajouter le délimiteur sur les autres informations à récupérer ou alors stocker les informations dans différents champs ?
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#3 Fri 13 October 2023 15:32
- Hydrolithe
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Apr 2010
- Messages: 223
Re: StringSearcher ou StringReplacer avec expression regulière
Bonjour,
Pour extraire le code postal + la commune, tu peux utiliser l'expression régulière suivante :
Code:
[0-9]{5} [A-Za-zéèêàâù\s\-\\u00C0-\\u00FF]+$
Je n'ai aucun mérite, j'ai trouvé ça dans la liste de ressources publiée par Mathieu Rajerison, tout le crédit lui en revient :
https://github.com/datagistips/memos/bl … regexes.md
Pierre
Hors ligne
#4 Fri 13 October 2023 16:16
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: StringSearcher ou StringReplacer avec expression regulière
Je rejoins Loïc, ça serait mieux si le formulaire ajoutait un délimiteur pour les composantes de l'adresse ou alors stockait tout dans des champs différents.
Néanmoins, avec cette expression rationnelle, vous devriez pouvoir vous en sortir pour découper l'adresse :
Code:
(.*) ([0-9]{5}) (.*)
Voir le détail : https://regex101.com/r/Ds8JPa/1
En utilisant un StringSearcher dans FME (avec l'option des subexpressions) et après avoir utilisé un AttributeSplitter, ça le fait !
Voir Workspace ci-joint.
A noter : j'ai considéré pour le code postal que ça n'était pas un code postal corse avec des A ou B mais seulement 5 chiffres. Il me semble que ça colle au besoin.
Dernière modification par p.jeremie (Fri 13 October 2023 16:22)
Hors ligne
#5 Fri 13 October 2023 16:29
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: StringSearcher ou StringReplacer avec expression regulière
Pour prendre en compte les codes postaux corses, l'expression suivante peut être utilisée :
Code:
(.*) ([0-9]{5}|2[AB][0-9]{3}) (.*)
Voir https://regex101.com/r/F1sKi5/1
Dernière modification par p.jeremie (Fri 13 October 2023 16:29)
Hors ligne
#6 Fri 13 October 2023 17:17
- Benoit91
- Participant assidu
- Date d'inscription: 2 Oct 2008
- Messages: 263
Re: StringSearcher ou StringReplacer avec expression regulière
Moi aussi je préférais que toutes ces informations soient séparées dans différents champs mais je n'ai pas le choix. Je n'ai pas la main sur la structuration de stockage des données. J'ai juste un accès en lecture qui me permet de récupérer les données. (merci FME pour nous permettre de nous adapter facilement)
En tout cas merci pour vos retours, j'ai opté pour:
un attributesplitter pour récupérer les cordonnées
un stringsearcher pour récupérer le code postal + commune
un stringreplacer pour supprimer le code postal + commune et ne conserver que l'adresse
çà fait le job.
Mon projet ne concerne que le territoire d'une agglo située en Essonne, donc pas besoin de la subtilité du regex pour les codes postaux corses, mais çà pourra toujours servir.
Merci tout le monde!
Hors ligne
Pages: 1
- Sujet précédent - StringSearcher ou StringReplacer avec expression regulière - Sujet suivant