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

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