Expressions régulières : Des masques tout fait

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Expressions régulières : Des masques tout fait

Message par Chris »

Si vous avez des masques que vous voulez partager, postez les ici.

Inutile de mettre toute la fonction. Mettez uniquement la chaine entre guillemets
avec une description courte de ce qu'elle est censée faire, comme ici.

Extraire un code postal :

Code : Tout sélectionner

"[0-9]{5}"
Extraire une adresse mail :

Code : Tout sélectionner

"[a-zA-Z0-9\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z]+"
Extraire un numéro de téléphone :

Code : Tout sélectionner

"0[1-9]([-. ]?[0-9]{2}){4}"
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : Des masques tout fait

Message par Ar-S »

Pour logiquement extraire des liens
- MegaUpload
- Hotfile
- Depositefile
- Gigaup

P.S : pas de commentaires foireux sur le type de fichier à récupérer, là n'est pas le sujet, merci.

Code : Tout sélectionner

  ; Ar-S / 2010
"ht{2}p:/{2}(www)*(.megaupload.com/\?d=|.gigaup.fr/\?g=|hotfile.com/dl/|depositfiles.com/files/)/*([0-9a-z/]*){17}[a-zA-Z0-9_.\(\)-]{4,}"
~~~~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
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Expressions régulières : Deformater un string numérique form

Message par falsam »

Deformater un string numérique formater

Exemple :
la chaine "10 235.25 €" deviendra "1023525"

Code : Tout sélectionner

Enumeration
  #NumOnly
EndEnumeration


Procedure.s DeformattedString(Buffer.s)
  Protected Dim Result.s (0), NbFound.l, x.i

  If CreateRegularExpression(#NumOnly,"[0-9]")
    NbFound=ExtractRegularExpression(#NumOnly, Buffer, Result())
    
    Buffer=""
    For x=0 To NbFound-1
     Buffer=Buffer+Result(x)
    Next
  
  EndIf
  
  ProcedureReturn Buffer
EndProcedure

;Quelques exemples
Debug DeformattedString("10 235.25 €")
Debug DeformattedString("€ 12 235.00")
Debug DeformattedString("10.125,10 F")
Debug DeformattedString("10/01/11") ; Date
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : Des masques tout fait

Message par Ar-S »

Code : Tout sélectionner

;Extracteur de date v2
;utilisant les expressions régulières
; Par Ar-S / Nov 2011 - P.B 4.60

; Extrait date sous forme jj-mm-aaaa (plus un espace) d'après une date dans sous la forme jj/mm/aaaa ou jj/mm/aaaa dans un string

t$ = "nous sommes le 16/11/2011 et on se caille les miches. Hier c'était pareil, le 15.11.2011 à 11h c'était encore givré" ; le string contenant la date
t$ + "la date suivante ne sera pas prise en compte : 17 11 2012 car le séparateur espace n'est pas indiqué"
Global Dim result$(0) 


Procedure.s ExtractDate(t$,ARS_separateur$)
  ; Ar-S
  ; Extraction de date v2
  
  Final$ = ""
  
  ; v2 permetant de trouver une date utilisant les separateurs "."  "/" et "-"
  expr$ = "([0-9]{2}+[" + ARS_separateur$ + "]){2}[0-9]{4}" 
  
  
  CreateRegularExpression(0,expr$)
  NbrTrouve = ExtractRegularExpression(0, t$ , result$()) ;Extrait les résultat dans result()
  
  If NbrTrouve>0
    
    For k = 0 To NbrTrouve-1
      LaDate$ = result$(k)
      Aremplacer$ = Mid(LaDate$,3,1)
      ; Ensuite la date est convertie ci besoin au format jj-mm-aaaa
      LaDate$ = ReplaceString(LaDate$,Aremplacer$,"-")
      
      If NbrTrouve = 1
        Final$ = LaDate$
      Else
        Final$ + " " + LaDate$
      EndIf
      
    Next 
    
    ; On supprime le 1er espace de gauche s'il y en a
    Final$ = LTrim(Final$)
    
    FreeRegularExpression(0)
    ProcedureReturn Final$
    
   
  Else
    FreeRegularExpression(0)
    ProcedureReturn "Pas de date !"
  EndIf
  
   
EndProcedure

Debug "test 1"
Debug ExtractDate(t$,"/.-") ; ici 3 séparateurs de recherchés

Debug "test 2"
Debug ExtractDate(t$," ") ; ici seulement le séparateur "espace"

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
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Expressions régulières : Des masques tout fait

Message par falsam »

Numérique avec ou sans une seule decimale.

Code : Tout sélectionner

*RegMatch = CreateRegularExpression(#PB_Any ,"^[-]?\d*[.,]?\d*$")

Debug MatchRegularExpression (*RegMatch, "100.10")
Debug MatchRegularExpression (*RegMatch, "a100.10")
Debug MatchRegularExpression (*RegMatch, "100,10")
Debug MatchRegularExpression (*RegMatch, "-100.10")
Debug MatchRegularExpression (*RegMatch, "-100")

FreeRegularExpression (*RegMatch)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Expressions régulières : Des masques tout fait

Message par Mesa »

Une petite application nommée "reval" a été développée en purebasic pour tester vos expressions régulières.

Bien pratique.
C'est quelque chose qui pourrait même faire partie de l’éditeur de PB àmon avis.

http://bluez.home.xs4all.nl/purebasic/p ... tm#4_reval

Téléchargement direct:
http://bluez.home.xs4all.nl/purebasic/reval.zip

Mesa.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expressions régulières : Des masques tout fait

Message par Ar-S »

Merci pour le lien Mesa, ça peut être bien pratique.
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Expressions régulières : Des masques tout fait

Message par Backup »

Mesa a écrit :C'est quelque chose qui pourrait même faire partie de l’éditeur de PB àmon avis.
je sais plus pour l'editeur Officiel , mais pour ce qui concerne , Japbe , ou EPB ;) on peut avoir acces a un utilitaire
par le menu , donc, utilisable a volonté pendant le codage :)
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Vérifier un mot dans une liste

Message par falsam »

Code : Tout sélectionner

;Vérifier un mot dans une liste
Global *RegMatch = CreateRegularExpression(#PB_Any ,"^(?i)(tomate|courgette|pomme de terre){1}")

Procedure EstUnlegume(Valeur.s)
  ProcedureReturn MatchRegularExpression (*RegMatch, Valeur)
EndProcedure

Debug EstUnlegume("courgette") ;Retournera #True

Debug EstUnlegume("pomme de terre") ;Retournera #True

Debug EstUnlegume("poire") ;Retournera #False

Debug EstUnlegume("Courgette") ;Retournera #True

Debug EstUnlegume("pomme de Terre") ;Retournera #True
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Expressions régulières : Des masques tout fait

Message par djes »

Luis a fait un bon topic là-dessus, ici : http://www.purebasic.fr/english/viewtop ... 12&t=47361

D'autre part, didelphodon a créé un programme pour tester les expressions régulières, Rexman: http://www.purebasic.fr/english/viewtop ... 27&t=37212

Je pense que ce serait une bonne idée de rendre ce sujet permanent.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Expressions régulières : Des masques tout fait

Message par Backup »

djes a écrit :Je pense que ce serait une bonne idée de rendre ce sujet permanent.
indirectement fait , je viens d'ajouter ce Topic dans le sommaire des Tutos
http://www.purebasic.fr/french/viewtopi ... 087#p65087

section "Divers" Sujet numero 2 .. ;)
Répondre