#1 Wed 16 February 2011 19:11
- fansz
- Participant actif
- Date d'inscription: 12 Jan 2010
- Messages: 104
String searcher expression régulière
Bonjour ,
Avec le transformer String searcher Je voudrais récupérer des nombres dans un champs contenant du texte : il s'agit d'un champ adresse et je voudrais donc séparer le numéro du nom de la voie
Quelle expression régulière me permettrait extraire tout les nombres de 1 à 999 par exemple ?
J'ai essayé [1-999]* mais je n'ai pas les nombres 10 100 etc ...
Pouvez vous m'aidez?
mERCI
Dernière modification par fansz (Wed 16 February 2011 19:13)
Hors ligne
#2 Thu 17 February 2011 09:16
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: String searcher expression régulière
Aloha
Essayez [0-9]* ce qui correspond à un nombre composé de chiffre de 0 à 9.
Cordialement,
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#3 Thu 17 February 2011 15:56
- fansz
- Participant actif
- Date d'inscription: 12 Jan 2010
- Messages: 104
Re: String searcher expression régulière
Oui merci de votre réponse je crois que j'ai posté trop vite
ce que je voulais sait pouvoir récupérer tout les chiffres dans une chaîne de caractères ce qui est possible en faisant [0-9]+
Voir ce tuto plutôt bien fait
Dernière modification par Pierre (Fri 25 February 2011 11:35)
Hors ligne
#4 Fri 25 February 2011 11:16
- MaelReboux
- Participant actif
- Lieu: Roazhon / Rennnes
- Date d'inscription: 24 Aug 2010
- Messages: 72
Re: String searcher expression régulière
Bonjour,
[0-9]+ récupérera effectivement tous les chiffres, sans limitation de longueur.
Si limitation de longueur, il faut préciser comme ceci : [0-9]{1,3}.
Je suis moi-même en galère sur des tests de formatage d'adresses. Ci-dessous des exemples d'adresses autorisées :
123
12b
12A
12bA
b t q correspondent à bis, ter ou quater
A B C -> P correspondent à des immeubles
je dois tester la présence d'espace (non autorisés) et le respect du motif.
j'ai abouti à l'expression suivante : ([0-9]{1,3})([b|t|q])?([A-P])?
où
ensemble 1 = ([0-9]{1,3}) = suite de 1 ou n chiffre
ensemble 2 = ([b|t|q])? = 0 ou n fois les caractères b t ou q
ensemble 3 = ([A-P])? = 0 ou n fois des caractères entre A et P
Mais elle laisse passer cette adresse, par exemple : 31z.
Merci d'avance pour votre aide.
Service SIG Rennes Métropole
AITF : Coordinateur GT voies-adresse
Et un peu OSM Bzh
Hors ligne
#5 Fri 25 February 2011 11:33
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: String searcher expression régulière
Aloha
Avez-vous essayé :
Code:
([0-9]{1,3})([b|t|q|z])?([A-P])?
?
PS. On ne sait jamais, mais le [0-9]+ aurait l'avantage d'être actualisé le jour ou apparaîtrait le 1200 rue du Thabor
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#6 Fri 25 February 2011 11:43
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1143
Re: String searcher expression régulière
Bonjour,
[0-9]+ récupérera effectivement tous les chiffres, sans limitation de longueur.
Si limitation de longueur, il faut préciser comme ceci : [0-9]{1,3}.
Je suis moi-même en galère sur des tests de formatage d'adresses. Ci-dessous des exemples d'adresses autorisées :
123
12b
12A
12bA
b t q correspondent à bis, ter ou quater
A B C -> P correspondent à des immeubles
je dois tester la présence d'espace (non autorisés) et le respect du motif.
j'ai abouti à l'expression suivante : ([0-9]{1,3})([b|t|q])?([A-P])?
où
ensemble 1 = ([0-9]{1,3}) = suite de 1 ou n chiffre
ensemble 2 = ([b|t|q])? = 0 ou n fois les caractères b t ou q
ensemble 3 = ([A-P])? = 0 ou n fois des caractères entre A et P
Mais elle laisse passer cette adresse, par exemple : 31z.
Merci d'avance pour votre aide.
Bjour,
L'expression rationnelle laisse passer 31z parce que le sous ensemble 31 match avec votre expression.
Théoriquement votre expression se traduit comme ceci :
je cherche une sous chaine d'une chaine qui à la structure suivante : de 1 à 3 chiffres, suivi de n ( b OU t OU q), suivi de n ( A OU P).
Je pense que vous devriez inclure dans votre expressions les symboles de début (^) et fin ($) de chaine.
Cordialement.
PS: je ne sais pas ce que c'est que FME, ma reflexion est tout a fait théorique.
Hors ligne
#7 Fri 25 February 2011 11:48
- MaelReboux
- Participant actif
- Lieu: Roazhon / Rennnes
- Date d'inscription: 24 Aug 2010
- Messages: 72
Re: String searcher expression régulière
@pierre
Euh : non. je veux justement exclure (mettre en erreur) tout ce qui sort du motif. L'adresse "31z" n'est pas conforme.
Normalement, une adresse à 4 chiffres ne peut pas exister. Je préfère la sortir en erreur pour la contrôler "manuellement".
@Sgio Muneta
je n'ai plus aucun match si j'encadre avec ^...$
Service SIG Rennes Métropole
AITF : Coordinateur GT voies-adresse
Et un peu OSM Bzh
Hors ligne
#8 Fri 25 February 2011 12:10
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1143
Re: String searcher expression régulière
Bjour,
C'est que les chaines passées en entrées ne correspondent pas à l'expression.
Vos chaines peuvent contenir des espaces au début ou a la fin ?
A tout hasard, encadrez votre expression ainsi ^(expression)$.
Hors ligne
#9 Fri 25 February 2011 13:33
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: String searcher expression régulière
Aloha,
^([0-9]+[b|t|q]?[A-P]?$)|([0-9]+$)
@+
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#10 Fri 25 February 2011 15:15
- MaelReboux
- Participant actif
- Lieu: Roazhon / Rennnes
- Date d'inscription: 24 Aug 2010
- Messages: 72
Re: String searcher expression régulière
Ça marche ! Merci Pierre.
Tant que l'on y est, comment s'y prendre si je veux exclure tout espace ?
Actuellement j'utilise un string searcher avec un simple espace pour filtrer en amont.
Un truc du genre ![ ] ?
Service SIG Rennes Métropole
AITF : Coordinateur GT voies-adresse
Et un peu OSM Bzh
Hors ligne
#11 Fri 25 February 2011 15:49
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: String searcher expression régulière
Veux-tu exclure toute chaîne comportant un espace ou supprimer les espaces en sortie ?
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#12 Fri 25 February 2011 16:19
- MaelReboux
- Participant actif
- Lieu: Roazhon / Rennnes
- Date d'inscription: 24 Aug 2010
- Messages: 72
Re: String searcher expression régulière
Il faut tester si la chaîne contient un ou plusieurs espaces, n'importe-où dans la chaîne.
Je sais déjà le faire mais je me demandais si c'était possible de rajouter cela dans l'expression ^([0-9]+[b|t|q]?[A-P]?$)|([0-9]+$) ?
Service SIG Rennes Métropole
AITF : Coordinateur GT voies-adresse
Et un peu OSM Bzh
Hors ligne
#13 Fri 25 February 2011 16:29
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: String searcher expression régulière
En fait avec l'expression dont j'ai fais part, il n'y a pas besoin de test sur les espaces :
^([0-9]+[b|t|q]?[A-P]?$)|([0-9]+$)
La première branche du choix débute par 1...n chiffres suivis d'un b ou d'un t, puis d'une lettre entre A et P en majuscule, puis se termine (le $). Donc une chaîne du type '31tA ' ne passe pas.
La seconde branche du choix débute par 1...n chiffre et se clôture. Donc '31 ' ne passe pas.
Sinon, ![ ] exclue bien les espaces.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#14 Fri 25 February 2011 19:39
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1143
Re: String searcher expression régulière
Bsoir,
juste pour signaler un truc sympa : http://www.annuaire-info.com/outil-refe … reguliere/ pour faire des tests rapides.
Hors ligne
#15 Mon 28 February 2011 08:41
- MaelReboux
- Participant actif
- Lieu: Roazhon / Rennnes
- Date d'inscription: 24 Aug 2010
- Messages: 72
Re: String searcher expression régulière
Merci pour votre aide.
Personnellement, j'ai trouvé The RegexCoach qui est très très bien : http://weitz.de/regex-coach/
Service SIG Rennes Métropole
AITF : Coordinateur GT voies-adresse
Et un peu OSM Bzh
Hors ligne