Page 1 sur 1
[resolu] - Parse un string
Publié : lun. 11/mars/2013 14:52
par doudouvs
J'ai un string et je souhaite récupérer uniquement ce dont j'ai besoin entre les balises.
exemple :
string = <blop>texte</blop>...
Si vous pouvez éclairer ma lanterne
Re: Parse un string
Publié : lun. 11/mars/2013 15:17
par falsam
Procédure de G-Rom avec utilisation des RegEx
Code : Tout sélectionner
Procedure.s ExtractFromTag(Text.s, open.s, close.s)
PosA = FindString(Text,open,1) + Len(open)
PosB = FindString(Text,close,2)
Out$ = Mid(Text,PosA,PosB-PosA)
ProcedureReturn Out$
EndProcedure
string$ = "<blop>Glop</blop> et <blop>Pas Glop</blop>"
;-Extraction
exp = CreateRegularExpression(#PB_Any, "<blop>([^<]*)</blop>")
Dim Strong$(0)
StrongFound = ExtractRegularExpression(exp,string$, Strong$())
FreeRegularExpression(exp)
;Resultat
For k = 0 To StrongFound-1
Debug ExtractFromTag(Strong$(k),"<blop>","</blop>")
Next
Il me semble que j'avais autre chose. Si je retrouve je poste

Re: Parse un string
Publié : lun. 11/mars/2013 15:20
par Azur
Salut, je sais pas si tu as beaucoup d'expérience en prog mais voici une solution universelle utilisée quasiment systématiquement de nos jours.
http://www.purebasic.com/documentation/ ... index.html
Je te cache pas que si tu en as jamais entendu parlé, les premières dix minutes ça va piquer un peu, mais il y a moyen de faire rapidement de petits tests. En quelques heures ça devrait être géré, ensuite libre à toi de d'aller concurrencer google sur son propre terrain.
Tiens-nous au courant.
Re: Parse un string
Publié : lun. 11/mars/2013 15:47
par doudouvs
ohh des des expressions régulières cool
Je suis conquis, je maîtrise quelques languages de programmation, les PCRE ne me pose pas de problème.
Concurrencer GG non je pense pas. Par contre j'ai déjà fait un moteur de recherche un peux plus rapide...
En faite je suis entrain de faire un soft de sauvegarde distant, je test toutes les étapes avant de coder le soft final.
Merci à vous deux
Re: Parse un string
Publié : lun. 11/mars/2013 15:48
par falsam
Toujours avec des expressions régulière
Code : Tout sélectionner
String$ = "<plop>texte</plop>"
exp=CreateRegularExpression(#PB_Any,"(<[[:alnum:]]*>)|(</[[:alnum:]]*>)")
Debug ReplaceRegularExpression(exp, String$,"")
FreeRegularExpression(exp)
On utilise la classe
alpha
numérique. C'est pas mal mais les balise foireuses passe aussi.
Re: Parse un string
Publié : lun. 11/mars/2013 16:22
par doudouvs
me suffira il n'y que des balises uniques sans doublon, vu que c'est moi qui fait le serveur distant
Re: Parse un string
Publié : lun. 11/mars/2013 16:29
par falsam
doudouvs a écrit :exp = CreateRegularExpression(#PB_Any, "<blop>(.*)</blop>")
Elle fonctionne ta regex ?
En reprenant ma précédente solution (Pas très juste mais suffisant)
Code : Tout sélectionner
n$ = "<blop>mon texte</blop>"
exp=CreateRegularExpression(#PB_Any,"<blop>|</blop>")
Debug ReplaceRegularExpression(exp,n$,"")
FreeRegularExpression(exp)
Re: Parse un string
Publié : lun. 11/mars/2013 16:34
par doudouvs
Oui (.*) veux dire tout
Code : Tout sélectionner
string$ = "<blop>Glop</blop>"
exp = CreateRegularExpression(#PB_Any, "<blop>(.*)</blop>")
Dim Strong$(0)
StrongFound = ExtractRegularExpression(exp,string$, Strong$())
FreeRegularExpression(exp)
For k = 0 To StrongFound-1
Debug ExtractFromTag(Strong$(k),"<blop>","</blop>")
Next
Dans Debug j'ai bien Glop
Re: Parse un string
Publié : lun. 11/mars/2013 16:39
par falsam
doudouvs a écrit :Dans Debug j'ai bien Glop
Je n'ai pas compris tout de suite que tu avais repris la première solution basée sur le code de G-Rom.
Re: Parse un string
Publié : lun. 11/mars/2013 16:40
par Ar-S
Salut,
Au cas ou tu ais loupé le lien, toujours bon à consulter
http://www.purebasic.fr/french/viewtopi ... 21&t=11395
Quelques exemples de regex avec PB.
Re: Parse un string
Publié : lun. 11/mars/2013 17:56
par Backup
....