Expressions régulières : LE CALVAIRE

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Expressions régulières : LE CALVAIRE

Message 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. :cry:

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 8)
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 :mrgreen: )
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : LE CALVAIRE

Message 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 ! :D

Encore pour le tel :
Celle ci est bien plus sympa, elle accepte des numéros avec ou sans séparateurs.

Code : Tout sélectionner

CreateRegularExpression(0,"0[1-9]([-. ]?[0-9]{2}){4}")

Code : Tout sélectionner

0[1-9]
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 :

Code : Tout sélectionner

[-. ]?
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 :

Code : Tout sélectionner

[0-9]{2})
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)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Expressions régulières : LE CALVAIRE

Message par Chris »

Ouais!! Super!

C'est exactement ce que je cherchais. :wink:

Merci.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Expressions régulières : LE CALVAIRE

Message 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?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : LE CALVAIRE

Message 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
Dernière modification par Ar-S le mer. 19/janv./2011 16:28, modifié 2 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Expressions régulières : LE CALVAIRE

Message 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. :wink:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : LE CALVAIRE

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Expressions régulières : LE CALVAIRE

Message par Chris »

J'avais trouvé ça, sur le net, mais impossible d'obtenir quoi que ce soit.

Code : Tout sélectionner

"^0[1-68]([-. ]?[0-9]{2}){4}$"
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é.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : LE CALVAIRE

Message par Ar-S »

pas besoin de "^" et "$" (1er et dernier)
Enlève les et cette expression marche.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : LE CALVAIRE

Message 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 :D

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

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Expressions régulières : LE CALVAIRE

Message par Chris »

Ar-S a écrit :pas besoin de "^" et "$" (1er et dernier)
Enlève les et cette expression marche.
Ah ben oui! 8O
Ah ben merde... :(

J'ai jamais pensé à virer ces deux caractères là :oops:
Répondre