Expression Régulière (marche en php/javascript et pas en pb)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Expression Régulière (marche en php/javascript et pas en pb)

Message par Thyphoon »

Je chercher a récupérer un simple code d'erreur.
La ligne est du genre
HTTP/1.1 200 OK
je veux juste vérifier que a ligne commence part HTTP et qu'il y a un nombre de 3 chiffres entouré part des espaces et récupérer le chiffre(ici 200), ainsi que séparément le chiffre des centaines.
Bref ici ça donnerait
Résultat : vrai
Capture 1 : 200
Capture 2 : 2
soit si je me trompe pas ^HTTP.+\s(([0-9])[0-9][0-9])\s
lorsque je test mon expression régulière ici ou la ça fonctionne bien.
mais ça ne marche pas avec ce code pourquoi ... :( ? si quelqu'un a une idée ...

Code : Tout sélectionner

  If CreateRegularExpression(0, "^HTTP.+\s(([0-9])[0-9][0-9])\s")
    Dim Result$(0)
    NbFound = ExtractRegularExpression(0, "HTTP/1.1 200 OK", Result$())
    For k = 0 To NbFound-1
      Debug Result$(k)
    Next
  Else
    Debug RegularExpressionError()
  EndIf

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Expression Régulière (marche en php/javascript et pas en

Message par Backup »

..............
Dernière modification par Backup le sam. 01/oct./2011 9:25, modifié 1 fois.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Expression Régulière (marche en php/javascript et pas en

Message par graph100 »

Bonjour Thyphoon ^^

Je n'ai pas vraiment regardé ta regex, mais j'avais travaillé dessus il y a un moment pour faire de la coloration syntaxique, et j'ai rencontré un soucis avec les regex de PB
Elles ne fonctionnent pas vraiment comme celle de PHP, ou autre.

Sur le fofo anglais ils avaient une solution, je l'ai reprise et corrigée pour avoir ce que je voulais ^^

Code : Tout sélectionner

ImportC ""
  pcre_exec(*pcre,*extra,subject.s,length,startoffset,options,*ovector,ovecsize)
EndImport

Procedure.s BackrefReplaceRegularExpression(regexp_handle, string.s, replacement.s, maximum_reference.l = 10) ; 0 <= maximum_reference <= 99
	Static Dim pcre_results(202)
	
	depart = 0
	
	While pcre_exec(PeekL(regexp_handle), 0, string, Len(string), depart, 0, @pcre_results(), 202) > 0
		; pcre_exec(PeekL(regexp_handle), 0, string, Len(string), pcre_results(1), 0, @pcre_results(), 202)

		rpl.s = replacement
		
		p = pcre_results(0)
		q = pcre_results(1)
		If FindString(replacement,"$0", 1)
			rpl = ReplaceString(rpl, "$0", PeekS(@string + p, q - p))
			
		EndIf
		
		tableau_ref = 2
		
		For _a = 1 To maximum_reference
			tag$ = "$" + Str(_a)
			
			If FindString(replacement, tag$, 1)
				p1 = pcre_results(tableau_ref)
				q1 = pcre_results(tableau_ref + 1)
				rpl = ReplaceString(rpl, tag$, PeekS(@string + p1, q1 - p1))
				
			EndIf
			
			tableau_ref + 2
		Next
		
		;       If FindString(replacement,"\2",1)
		;       	p1=pcre_results(4)
		;       	q1=pcre_results(5)
		;       	rpl=ReplaceString(rpl,"\2",PeekS(@string+p1,q1-p1))
		;       EndIf
		;       If FindString(replacement,"\3",1)
		;          p1=pcre_results(6)
		;          q1=pcre_results(7)
		;          rpl=ReplaceString(rpl,"\3",PeekS(@string+p1,q1-p1))
		;       EndIf
		
		depart = p + Len(rpl)
		
		string = Left(string, p) + rpl + Right(string, Len(string) - q)
	Wend
	
	ProcedureReturn string
EndProcedure


rh = CreateRegularExpression(0," t(.*?)e(.*?) ")

Debug BackrefReplaceRegularExpression(rh,"As they functions tried importing them through the tset ","________$0")
Avec ce code tu devrais avoir accès à pas mal de truc en interne, comme les valeurs du contenu de chaque parenthèse.
Ces valeurs sont accessibles avec la notation $0, $1, etc.. comme sur PHP

Apparemment il n'y a pas besoin de fichier pour : ImportC ""
Ça je ne sais pas pourquoi !
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Expression Régulière (marche en php/javascript et pas en

Message par Thyphoon »

merci Dobro pour cette réponse détaillé! Mais c'est bien dommage que les parenthèses capturantes ne soit pas implémenté dans PB ! :roll:

Merci graph100 le code a l'air vraiment interesant ... faut que je regarde ça de plus prêt et que je test si il est cross-platoforme !
En tout cas merci !
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Expression Régulière (marche en php/javascript et pas en

Message par graph100 »

Tiens voila ^^
J'ai fait le truc des parenthèses capturante. Tu vas être content ça fais tout en une fois xD
Il n'y a normalement pas d'API, ce devrait être cross platforme !

Code : Tout sélectionner

ImportC ""
  pcre_exec(*pcre,*extra,subject.s,length,startoffset,options,*ovector,ovecsize)
EndImport


Structure List_Extraction
	Array Extract.s(0)
EndStructure


Procedure.s BackrefReplaceRegularExpression(regexp_handle, string.s, replacement.s, maximum_reference.l = 10) ; 0 <= maximum_reference <= 99
	Static Dim pcre_results(202)
	
	depart = 0
	
	While pcre_exec(PeekL(regexp_handle), 0, string, Len(string), depart, 0, @pcre_results(), 202) > 0
		; pcre_exec(PeekL(regexp_handle), 0, string, Len(string), pcre_results(1), 0, @pcre_results(), 202)

		rpl.s = replacement
		
		p = pcre_results(0)
		q = pcre_results(1)
		If FindString(replacement,"$0", 1)
			rpl = ReplaceString(rpl, "$0", PeekS(@string + p, q - p))
			
		EndIf
		
		tableau_ref = 2
		
		For _a = 1 To maximum_reference
			tag$ = "$" + Str(_a)
			
			If FindString(replacement, tag$, 1)
				p1 = pcre_results(tableau_ref)
				q1 = pcre_results(tableau_ref + 1)
				rpl = ReplaceString(rpl, tag$, PeekS(@string + p1, q1 - p1))
				
			EndIf
			
			tableau_ref + 2
		Next
		
		;       If FindString(replacement,"\2",1)
		;       	p1=pcre_results(4)
		;       	q1=pcre_results(5)
		;       	rpl=ReplaceString(rpl,"\2",PeekS(@string+p1,q1-p1))
		;       EndIf
		;       If FindString(replacement,"\3",1)
		;          p1=pcre_results(6)
		;          q1=pcre_results(7)
		;          rpl=ReplaceString(rpl,"\3",PeekS(@string+p1,q1-p1))
		;       EndIf
		
		depart = p + Len(rpl)
		
		string = Left(string, p) + rpl + Right(string, Len(string) - q)
	Wend
	
	ProcedureReturn string
EndProcedure

Procedure.s BackrefExtractRegularExpression(regexp_handle, string.s, Array Extract.b(1), List Resultat.List_Extraction()) ; 0 <= Taille tableau Extract <= 99
	Static Dim pcre_results(202)
	
	depart = 0
	
	maximum_reference = ArraySize(Extract())
	
	ClearList(Resultat())
	
	While pcre_exec(PeekL(regexp_handle), 0, string, Len(string), depart, 0, @pcre_results(), 202) > 0
		; pcre_exec(PeekL(regexp_handle), 0, string, Len(string), pcre_results(1), 0, @pcre_results(), 202)
		
		AddElement(Resultat())
		Dim Resultat()\Extract(maximum_reference)
		
		p = pcre_results(0)
		q = pcre_results(1)
		If Extract(0) = #True
			Resultat()\Extract(0) = PeekS(@string + p, q - p)
		EndIf
		
		tableau_ref = 2
		
		For _a = 1 To maximum_reference
			
			If Extract(_a) = #True
				p1 = pcre_results(tableau_ref)
				q1 = pcre_results(tableau_ref + 1)
				
				Resultat()\Extract(_a) = PeekS(@string + p1, q1 - p1)
			EndIf
			
			tableau_ref + 2
		Next
		
		depart = p ; + Len(rpl)
		
; 		string = Left(string, p) + rpl + Right(string, Len(string) - q)
		string = Left(string, p) + Right(string, Len(string) - q)
	Wend
	
	ProcedureReturn string
EndProcedure


REGEX$ = " t(.*?)e(.*?) "

rh = CreateRegularExpression(0, REGEX$)

CHAINE$ = "As they functions tried importing them through the tset "


Debug "#### Test de remplacement Recurrent :"
Debug ""
Debug "Chaine de départ :"
Debug CHAINE$
Debug "Regex = ||" + REGEX$ + "||"
Debug ""
Debug "Résultat :"
Debug BackrefReplaceRegularExpression(rh, CHAINE$, "________$0")


Dim tableau_extraction.b(2)
NewList Result.List_Extraction()

For a = 0 To 2
	tableau_extraction(a) = #True
Next

BackrefExtractRegularExpression(rh, CHAINE$, tableau_extraction(), Result())

Debug ""
Debug ""
Debug "#### Test d'extraction Recurrente :"
Debug ""
Debug "Chaine de départ :"
Debug CHAINE$
Debug "Regex = ||" + REGEX$ + "||"
Debug ""
Debug "Valeurs extraites :"
Debug ""

b = 0
ForEach Result()
	Debug "Occurence " + Str(b)
	
	For a = 0 To 2
		Debug "$" + Str(a) + " = " + Result()\Extract(a)
	Next
	
	b + 1
Next
Donc avec ta regex et ta chaine à tester ça donnerais :

Code : Tout sélectionner

;{ Lib Backref Replace / Extract

ImportC ""
  pcre_exec(*pcre,*extra,subject.s,length,startoffset,options,*ovector,ovecsize)
EndImport


Structure List_Extraction
	Array Extract.s(0)
EndStructure


Procedure.s BackrefReplaceRegularExpression(regexp_handle, string.s, replacement.s, maximum_reference.l = 10) ; 0 <= maximum_reference <= 99
	Static Dim pcre_results(202)
	
	depart = 0
	
	While pcre_exec(PeekL(regexp_handle), 0, string, Len(string), depart, 0, @pcre_results(), 202) > 0
		; pcre_exec(PeekL(regexp_handle), 0, string, Len(string), pcre_results(1), 0, @pcre_results(), 202)

		rpl.s = replacement
		
		p = pcre_results(0)
		q = pcre_results(1)
		If FindString(replacement,"$0", 1)
			rpl = ReplaceString(rpl, "$0", PeekS(@string + p, q - p))
			
		EndIf
		
		tableau_ref = 2
		
		For _a = 1 To maximum_reference
			tag$ = "$" + Str(_a)
			
			If FindString(replacement, tag$, 1)
				p1 = pcre_results(tableau_ref)
				q1 = pcre_results(tableau_ref + 1)
				rpl = ReplaceString(rpl, tag$, PeekS(@string + p1, q1 - p1))
				
			EndIf
			
			tableau_ref + 2
		Next
		
		;       If FindString(replacement,"\2",1)
		;       	p1=pcre_results(4)
		;       	q1=pcre_results(5)
		;       	rpl=ReplaceString(rpl,"\2",PeekS(@string+p1,q1-p1))
		;       EndIf
		;       If FindString(replacement,"\3",1)
		;          p1=pcre_results(6)
		;          q1=pcre_results(7)
		;          rpl=ReplaceString(rpl,"\3",PeekS(@string+p1,q1-p1))
		;       EndIf
		
		depart = p + Len(rpl)
		
		string = Left(string, p) + rpl + Right(string, Len(string) - q)
	Wend
	
	ProcedureReturn string
EndProcedure

Procedure.s BackrefExtractRegularExpression(regexp_handle, string.s, Array Extract.b(1), List Resultat.List_Extraction()) ; 0 <= Taille tableau Extract <= 99
	Static Dim pcre_results(202)
	
	depart = 0
	
	maximum_reference = ArraySize(Extract())
	
	ClearList(Resultat())
	
	While pcre_exec(PeekL(regexp_handle), 0, string, Len(string), depart, 0, @pcre_results(), 202) > 0
		; pcre_exec(PeekL(regexp_handle), 0, string, Len(string), pcre_results(1), 0, @pcre_results(), 202)
		
		AddElement(Resultat())
		Dim Resultat()\Extract(maximum_reference)
		
		p = pcre_results(0)
		q = pcre_results(1)
		If Extract(0) = #True
			Resultat()\Extract(0) = PeekS(@string + p, q - p)
		EndIf
		
		tableau_ref = 2
		
		For _a = 1 To maximum_reference
			
			If Extract(_a) = #True
				p1 = pcre_results(tableau_ref)
				q1 = pcre_results(tableau_ref + 1)
				
				Resultat()\Extract(_a) = PeekS(@string + p1, q1 - p1)
			EndIf
			
			tableau_ref + 2
		Next
		
		depart = p ; + Len(rpl)
		
; 		string = Left(string, p) + rpl + Right(string, Len(string) - q)
		string = Left(string, p) + Right(string, Len(string) - q)
	Wend
	
	ProcedureReturn string
EndProcedure

;}




REGEX$ = "^HTTP.+\s(([0-9])[0-9][0-9])\s"

CHAINE$ = "HTTP/1.1 200 OK"


RegHandle = CreateRegularExpression(0, REGEX$)


; on crée le tableau pour extraire les parenthèses que l'on veux
Dim Tableau_Extraction.b(2)

; on n'oublie pas de paramétrer le tableau !!
For a = 1 To 2 ; on ne met pas 0 car on n'a pas besoin de $0
	Tableau_Extraction(a) = #True
Next

; on crée la liste pour récupérer les résultats
NewList Resultat.List_Extraction()


; effectue l'extraction :
BackrefExtractRegularExpression(RegHandle, CHAINE$, Tableau_Extraction(), Resultat())

; on affiche les resultats :

Debug "Chaine de départ :"
Debug CHAINE$
Debug "Regex = ||" + REGEX$ + "||"
Debug ""
Debug "Valeurs extraites :"
Debug ""

b = 0
ForEach Resultat()
	Debug "Occurence " + Str(b)
	
	For a = 0 To ArraySize(Resultat()\Extract())
		Debug "$" + Str(a) + " = " + Resultat()\Extract(a)
	Next
	
	b + 1
Next
Et voila ^^
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Expression Régulière (marche en php/javascript et pas en

Message par Backup »

:lol: :lol: excellent ! :)

ben je prefere mon

Code : Tout sélectionner

phrase$="HTTP/1.1 200 OK"

debug stringfield(phrase$,1," ")
debug stringfield(phrase$,2," ")
debug stringfield(phrase$,3," ")
debug left(stringfield(phrase$,2," "),1)
pour un traitement aussi simple , pourquoi faire simple apres tout ?? :lol:
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Expression Régulière (marche en php/javascript et pas en

Message par Thyphoon »

Merci Graph100 un peu complexe ton code.... tu vas voir ce que j'ai fais a partir de ton premier code
Dobro a écrit ::lol: :lol: excellent ! :)

ben je prefere mon

Code : Tout sélectionner

phrase$="HTTP/1.1 200 OK"

debug stringfield(phrase$,1," ")
debug stringfield(phrase$,2," ")
debug stringfield(phrase$,3," ")
debug left(stringfield(phrase$,2," "),1)
pour un traitement aussi simple , pourquoi faire simple apres tout ?? :lol:
seulement j'ai simplifié le problème pour l'exposer sur le forum mais il s'agit d'une boucle qui reçoit énormément de ligne formaté différemment et parfois qui se ressemble et il n'y a que dans le cas que j'ai indiqué que ça doit marcher.
Car avec ton exemple tu aura un résultat même si la ligne de texte est
"VERSION 20 BETA"
voilà donc ma solution
Et une fois de plus c'est bien dommage que les expressions régulières ne soient pas complétement implémenté (sauf erreur de ma part)

Code : Tout sélectionner

ImportC ""
  pcre_exec(*pcre,*extra,subject.s,length,startoffset,options,*ovector,ovecsize)
EndImport

Procedure.l myExtractRegularExpression(regexp_handle, string.s,Array Result$(1))
  Static Dim pcre_results(202)
  depart = 0
  ;http://regexkit.sourceforge.net/Documentation/pcre/pcre_exec.html
  n=pcre_exec(PeekL(regexp_handle), 0, string, Len(string), depart, 0, @pcre_results(), 202) 
  If n>0
    ReDim Result$(n)
    tableau_ref = 0
    For a = 0 To n-1
      s = pcre_results(tableau_ref)
      e = pcre_results(tableau_ref + 1)
      Result$(a)=PeekS(@string + s, e - s)
      tableau_ref + 2
    Next
  EndIf
  
  ProcedureReturn n
EndProcedure

re=CreateRegularExpression(0, "^HTTP.+\s(([0-9])[0-9][0-9])\s")
If re
  Dim Result$(0)
  NbFound=myExtractRegularExpression(re,"HTTP/1.1 200 OK",Result$())
  For k = 0 To NbFound-1
    Debug Result$(k)
  Next
Else
  Debug RegularExpressionError()
EndIf

Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Expression Régulière (marche en php/javascript et pas en

Message par graph100 »

pourquoi pas ^^, moi j'ai fait une fonction qui sert dans un cas général, donc elle est légèrement plus compliquée.

L'essentiel est que tu es quelque chose de simple qui puisse te servir ^^
C'est pas mal ce que tu as fait.
Moi j'aurais mis une liste au lieu d'un tableau, j'ai pris l'habitude de ne pas utiliser de tableau quand je ne connais pas la taille de ce que je veux récupérer.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Expression Régulière (marche en php/javascript et pas en

Message par Thyphoon »

graph100 a écrit :pourquoi pas ^^, moi j'ai fait une fonction qui sert dans un cas général, donc elle est légèrement plus compliquée.

L'essentiel est que tu es quelque chose de simple qui puisse te servir ^^
C'est pas mal ce que tu as fait.
Moi j'aurais mis une liste au lieu d'un tableau, j'ai pris l'habitude de ne pas utiliser de tableau quand je ne connais pas la taille de ce que je veux récupérer.
ba si tu regarde bien la mienne aussi ! :mrgreen:
elle te dit si une chaine est validé part une expression regulière et te sort dans un tableau toute les parenthèses capturantes !
Je vais enfin pouvoir faire ce que je fais en php depuis longtemps ! La seul chose que je sais pas c'est si c'est cross platforme ou pas comme code !! :) En tout cas un grand merci
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expression Régulière (marche en php/javascript et pas en

Message par Ar-S »

Dans le cas ou l'info recherchée est une suite de 3 chiffres entourés d'un espace, voilà comment je procèderai.

"[ ]([0-9]){3}[ ]"
-> on impose un espace [ ]
-> on veut un chiffre [0-9]
-> trois fois {3}
-> on impose un espace [ ]

ça évite qu'il sorte un resultat positif si on a un grand chiffre 2150, ainsi il n'affichera pas 215 ni 150

Code : Tout sélectionner

;Extracteur de suite de 3 chiffres
;utilisant les expressions régulières
; Par Ar-S / janvier 2010 - P.B 4.51

Global t$="HTTP/1.1 210 OK"
Global NbrTrouve

Dim result$(0) 

expr$ = "[ ]([0-9]){3}[ ]" 
; on impose un espace [ ]
; on veut un chiffre [0-9] 
; trois fois {3}
; on impose un espace [ ]

CreateRegularExpression(0,expr$)

NbrTrouve = ExtractRegularExpression(0, t$ , result$()) ;Extrait les résultat dans result()

If NbrTrouve>0
  message$= Str(NbrTrouve) +" numéros de trouvés"
  If NbrTrouve=1
    message$= Str(NbrTrouve) +" numéro de trouvé"
  EndIf
  
  Debug message$
  
  For k = 0 To NbrTrouve-1
    Nombre$=result$(k)+Chr(10)+Chr(13)
    Debug "Numéro "+Str(k+1)+" : "+Nombre$
  Next 
  
Else
  message$ = "ça chiasse :'( "
  Debug message$
EndIf

End

Dernière modification par Ar-S le mer. 20/juil./2011 17:21, modifié 1 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
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Expression Régulière (marche en php/javascript et pas en

Message par Thyphoon »

merci beaucoup Ar-S
Effectivement c'était la méthode que j'avais utilisé lorsque j'ai compris que les () capturantes ne fonctionnait pas. :)
Mais ça oblige faire des tests en plus car comme je le disais a Dobro
si j'ai comme text un truc du genre "Lenghts 874 250 320" et bien ça va me renvoyer 874

Ce que j'aurais peut être du expliquer des le départ c'est que je reçois des lignes de code dans le désordre. Et que chaque ligne a une fonction et des paramètres important
et il est plus simple de passer part un regex qui vous valide la ligne comme étant de tel genre et vous ressort automatiquement les paramètres :P
après effectivement on peut se passer des regex et tout faire a coup de findstring(),mid(),stringfield() etc... mais ils sont là pour eviter ça les regex !! :)

En tout cas un grand merci a tous car vous avez tous apporter quelques choses d’intéressant a mon problème. et au final je pense qu'en fonction de la complexité de ce que je vais tester je vais utiliser toutes vos méthodes !
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Expression Régulière (marche en php/javascript et pas en

Message par Ar-S »

J'ai pas super compris ton explication (j'ai la crève faut dire je suis gazé)

J'ai relu l'énoncé de ton 1er topic, j'ai adapté le code pour qu'il réponde à ce que j'ai pigé.
il extrait uniquement le contenu des parenthèses si elles contiennent au moins 3 chiffres
La condition "vrai" est affichée si ça commence par HTTP

Code : Tout sélectionner

;Extracteur de suite de 3 chiffres minimum contenu entre parenthèses
;utilisant les expressions régulières
; Par Ar-S / juillet 2011 - P.B 4.51

Global t$="HTTP/1.1 210 toto (874) 250 (320) et bien ça va me 1750 (ren)voyer (874 721) OK"
Global Bilan$,Nombre$
Global NbrTrouve

Dim result$(0) 

expr$ = "[(]([0-9]){3}[0-9 ]*[)]" 

If Left(t$,4) = "HTTP"
  Debug "La ligne commence par HTTP : Ok  "
  
  CreateRegularExpression(0,expr$)
  
  NbrTrouve = ExtractRegularExpression(0, t$ , result$()) ;Extrait les résultat dans result()
  
  If NbrTrouve>0
    Condition$ = " > Condition = Vrai < " 
    message$= Str(NbrTrouve) +" numéros de trouvés     "
    If NbrTrouve = 1
      message$ = Str(NbrTrouve) +" numéro de trouvé    "
    EndIf
    
    Debug message$
    Debug Condition$
    
    For k = 0 To NbrTrouve-1
      Nombre$ = Mid ( result$(k), 2 , Len(result$(k))-2)
      Premierchiffre$=" > Premier chiffre : "+Left(Nombre$,1)+" < "
      Debug ""
      Debug "Numéro "+Str(k+1)+" : "+Nombre$
      
      Debug Premierchiffre$
    Next 
    
  Else
    Bilan$ = "Condition = Faux  "
    message$ = "ça chiasse :'( "
    Debug Bilan$
    Debug message$
    
  EndIf
  
Else
  Debug "Pas de http, on arrête là"
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
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Expression Régulière (marche en php/javascript et pas en

Message par Thyphoon »

merci Ar-S oui, oui ça marche Merci beaucoup.
je disais plus que c'est bien pratique de pouvoir faire plusieur test en une seul fois avec un regex plutôt que combiné regex+left+mid+findstring+etc...
surtout quand tu as une vingtaine de type de ligne différent.Effectivement dans mon exemple il n'y en avait qu'une...mais c'était pour simplifier le problème. Et le problème c'était que les "()" capturante ne fonctionnaite pas et qu'on ne pouvait pas extraire facilement un resultat précis d'une chaine ! :wink:
Bon courage pour ta crère ! remarque on se demande si on est déjà en hiver :(
Répondre