Je suis tombé sur un super code de "Deluxe0321" qui parsait de l'HTML avec des REGEX (Cool l'idée)
Seulement voilà, il ne parse "que" les attributs et les balises, pas le texte des balises
Les passionnés des REGEX (comment est ce possible ) sauraient il comment récupérer le texte plutôt que l'attribut des balises ?
Code : Tout sélectionner
AExpression.s = "(\S+)=["+#DQUOTE$+"']?((?:.(?!["+#DQUOTE$+"']?\s+(?:\S+)=|[>"+#DQUOTE$+"']))+.)["+#DQUOTE$+"']?"
Code : Tout sélectionner
<MaBalise>Je cherche à récupérer ce texte</MaBalise>
Code : Tout sélectionner
InitNetwork()
;// html tag expression --> http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx
Expression.s = "</?\w+((\s+\w+(\s*=\s*(?:"+#DQUOTE$+".*?"+#DQUOTE$+"|'.*?'|[^'"+#DQUOTE$+">\s]+))?)+\s*|\s*)/?>"
;// html attribute expression --> http://stackoverflow.com/a/317081
AExpression.s = "(\S+)=["+#DQUOTE$+"']?((?:.(?!["+#DQUOTE$+"']?\s+(?:\S+)=|[>"+#DQUOTE$+"']))+.)["+#DQUOTE$+"']?"
RegEx.i = CreateRegularExpression(#PB_Any,Expression.s)
ARegEx.i = CreateRegularExpression(#PB_Any,AExpression.s)
If RegEx.i and ARegEx.i
If ReceiveHTTPFile("http://www.purebasic.fr/english/", GetHomeDirectory()+"tmp.html")
If OpenFile(0,GetHomeDirectory()+"tmp.html")
*mem = AllocateMemory(Lof(0))
If *mem
ReadData(0,*mem,Lof(0))
CloseFile(0)
EndIf
DeleteFile(GetHomeDirectory()+"tmp.html")
EndIf
Content.s = PeekS(*mem,-1,#PB_Ascii)
FreeMemory(*mem)
Debug Content.s
Dim Arr.s(0)
Dim AArr.s(0)
ArrSize.i = ExtractRegularExpression(RegEx.i,Content.s,Arr())
If ArrSize.i
Debug "Found "+Str(ArrSize.i)+" HTML Tags:"
For i=0 To ArrSize.i - 1
ReDim AArr(0)
AArrSize.i = ExtractRegularExpression(ARegEx.i,Arr(i),AArr())
Debug Space(4) + "HTML-Tag:"
Debug Space(8) + Arr(i)
If AArrSize
Debug Space(4) + "Attributes: "
For i2 = 0 To AArrSize.i - 1
Debug Space(8) + AArr(i2)
Next
EndIf
Next
EndIf
EndIf
EndIf