Page 1 sur 1

Expressions régulières : Des masques tout fait

Publié : mer. 19/janv./2011 16:25
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}"

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

Publié : sam. 02/avr./2011 12:05
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,}"

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

Publié : mar. 06/sept./2011 10:01
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

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

Publié : mer. 16/nov./2011 11:51
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

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

Publié : ven. 25/mai/2012 22:11
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)

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

Publié : mar. 29/mai/2012 8:09
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.

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

Publié : mar. 29/mai/2012 9:29
par Ar-S
Merci pour le lien Mesa, ça peut être bien pratique.

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

Publié : mar. 29/mai/2012 10:08
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 :)

Vérifier un mot dans une liste

Publié : jeu. 13/déc./2012 21:50
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

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

Publié : jeu. 24/janv./2013 10:52
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.

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

Publié : jeu. 24/janv./2013 12:20
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 .. ;)