Page 1 sur 1
Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 11:45
par Chris
Qui pourrait me refiler un masque pour trouver un n° de téléphone dans une chaine?
Ça fait deux jours que je suis là-dessus, et j'arrive à rien.
D'ailleurs, ça serait pas mal de faire un topic dans les tutos ou chacun pourrait déposer juste le masque et en disant ce qu'il fait.
Par exemple :
Code Postal : "[0-9]{5}" -->
celui-là, je l'ai trouvé tout seul comme un grand
Adresse Mail : "[a-zA-Z0-9\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z]+" -->
celui-là, je l'ai piqué sur le forum, je ne sais plus à qui. (Nico, je crois
)
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 15:07
par Ar-S
Si tes tels son genre 0176885544 tu fais comme pour le code postale.
Code : Tout sélectionner
CreateRegularExpression(0,"[0-9]{10}") ; cherche suite de 10 chiffres
D'ailleurs, ça serait pas mal de faire un topic dans les tutos ou chacun pourrait déposer juste le masque et en disant ce qu'il fait.
Je suis pour !
Encore pour le tel :
Celle ci est bien plus sympa, elle accepte des numéros avec ou sans séparateurs.
Ceci permet d'extraire une suite nombres commençant par 0 suivi de 1 à 9 (dans l'idée qu'un numéro de tel ne commence pas par 00)
On indique ensuite les éventuels séparateurs :
La le
tiret le
point et l'
espace sont les séparateurs mais ne sont pas obligatoires (d'où le
?)
on indique ensuite qu'il y a 2 autres chiffres :
et on répète cette dernière opération 4 fois :
Edit :
Un générateur d'expression régulière avec interface simplifier serait super !
Une Gui permettant de remplir des champs ce qui créerait l'expression automatiquement.
"Que cherchez vous ? (nombre ? chaine de caractère ? commençant par ? Finissant par ? suivi de etc)
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 15:58
par Chris
Ouais!! Super!
C'est exactement ce que je cherchais.
Merci.
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 16:05
par Chris
Donc, en fait, dans ton truc :
Le chiffre (le zéro) avant le "[" indique que ce caractère se trouve obligatoirement au début de la chaine.
le {4} indique qu'il faut répéter 4 fois ce qui est entre parenthèse.
J'ai tout compris?
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 16:09
par Ar-S
oui c'est ça.
Voilà un code qui marche ^^
Code : Tout sélectionner
;Extracteur de numéro de tel
;utilisant les expressions régulières
; Par Ar-S / janvier 2010 - P.B 4.51
; Exemple de contenu cible avec numéros de tel à extraire
Global t$="Michau Louison 06.78.58.12.20 6 rue chapelle des monts dussant "+Chr(10)+"Toto Lamangue : 0678581220 bouse les Vilains 32321 route des 1000121457geeks "
Global NbrTrouve
Dim result$(0)
CreateRegularExpression(0,"0[1-9]([-. ]?[0-9]{2}){4}")
;Explication en détail
; ----1er bloc------
;0 : on indique que la suite recherchée commence par 0
;[1-9] : ensuite un nouveau chiffre de 1 à 9 (ceci dans l'idée qu'un numéro de tel ne commence pas par 00)
; ----2eme bloc------
;([-. ]?[0-9]{2}){4}
; on peut voir qu'il y a un contenu entre parenthèse
; ce contenu ([-. ]?[0-9]{2}) va être répété 4 fois à cause de {4}
;Voyons plus en détail le contenu des parenthèses
; [-. ]? : sigifie qu'il peut y avoir un séparateur . - ou espace
; le ? signifie que ce n'est pas obligatoire.
; [0-9]{2} : signifie qu'il y a ensuite 2 fois 1 chiffre de 0 à 9 (donc une suite de 2 chiffres)
;0[1-9]([-. ]?[0-9]{2}){4} trouverait une pseudo francisation équivalante à : 0 puis 1 ou 9 puis un séparateur qui sera présent ou non entre les 4 prochaines suite de 2 chiffres.
NbrTrouve = ExtractRegularExpression(0, t$ , result$()) ;Extrait les résultat dans result()
If NbrTrouve>0
message$= Str(NbrTrouve) +" numéro de trouvé"
If NbrTrouve=1
message$= Str(NbrTrouve) +" numéros de trouvés"
EndIf
Debug message$
For k = 0 To NbrTrouve-1
NumTel$=result$(k)+Chr(10)+Chr(13)
Debug "Numéro "+Str(k+1)+" : "+NumTel$
Next
Else
message$= "Aucun numéro n'a été trouvé :'( "
Debug message$
EndIf
End
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 16:16
par Chris
Je met ça dans mes bouts de code.
Reste plus qu'à trouver comment formater les numéros pour qu'ils aient tous la même allure. (Avec des espaces, ou des tirets, ou des points, etc...)
Je devrais trouver, maintenant.

Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 16:27
par Ar-S
J'ai inclus l'explication en commentaires dans le code de dessus.
En ce qui me concerne, pour le formatage, je trouve que : xx.xx.xx.xx.xx est le plus lisible.
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 16:33
par Chris
J'avais trouvé ça, sur le net, mais impossible d'obtenir quoi que ce soit.
J'ai pourtant trituré les caractères dans tous les sens, rien à faire.
C'est pourtant assez proche de ce que tu m'as donné.
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 17:04
par Ar-S
pas besoin de "^" et "$" (1er et dernier)
Enlève les et cette expression marche.
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 17:34
par Ar-S
allez hop, de la même manière un chercheur de lien rar dans une source ^^
ce code fait les 2
recherche tel et recherche lien rar
Code : Tout sélectionner
;Extracteur de lien rar
;utilisant les expressions régulières
; Par Ar-S / janvier 2010 - P.B 4.51
; Exemple de contenu cible avec numéros et lien rar à extraire
Global t$
t$="Michau Louison 06.78.58.12.20 6 rue chapelle http://test001.monserveur.com/monfichier.rar des monts dussant "+Chr(10)+"Toto Lamangue : 0678581220 bouse les Vilains 32321 route des 1000121457geeks "
t$+Chr(10)+"Morticia http://patate.fr elle aimme le pudding.rar"
Global NbrLien,NbrTel
Dim result$(0)
Dim resultel$(0)
;
expr$="http://[a-z0-9./_-]+.rar{1,}" ; lien menant à un .rar
CreateRegularExpression(0,expr$)
NbrLien = ExtractRegularExpression(0, t$ , result$()) ;Extrait les résultat dans result()
If NbrLien>0
message$= Str(NbrLien) +" Liens de trouvés"
If NbrLien=1
message$= Str(NbrLien) +" Lien de trouvé"
EndIf
Debug message$
For k = 0 To NbrLien-1
NumTel$=result$(k)
Debug "Lien "+Str(k+1)+" : "+NumTel$
Next
Else
message$= "Aucun lien n'a été trouvé :'( "
Debug message$
EndIf
Debug "----------------"
expTel$ = "0[1-9]([-. ]?[0-9]{2}){4}" ; la mienne ; TELEPHONE
CreateRegularExpression(1,expTel$)
NbrTel = ExtractRegularExpression(1, t$ , resultel$()) ;Extrait les résultat dans result()
If NbrLien>0
message2$= Str(NbrTel) +" numéros de trouvés"
If NbrTel=1
message2$= Str(NbrTel) +" numéro de trouvé"
EndIf
Debug message2$
For k = 0 To NbrTel-1
NumTel$=resultel$(k)
Debug "Lien "+Str(k+1)+" : "+NumTel$
Next
Else
message2$= "Aucun lien n'a été trouvé :'( "
Debug message2$
EndIf
End
Re: Expressions régulières : LE CALVAIRE
Publié : mer. 19/janv./2011 17:34
par Chris
Ar-S a écrit :pas besoin de "^" et "$" (1er et dernier)
Enlève les et cette expression marche.
Ah ben oui!
Ah ben merde...
J'ai jamais pensé à virer ces deux caractères là
