Page 1 sur 1

Boucle sur valeur d'une Regex

Posté : lun. 22 mai 2017 14:30
par Master
Bonjour à tous,

Je ne comprends pas du tout cette erreur, le résultat de ma regex est validée, elle me retourne bien une valeur nombre.

Et lorsque je fais une boucle For $x = 1 To [la valeur de la regex] il me retourne une erreur...

ConsoleWrite($Categories[$j] & ";" & $Villes[$i] & ";page-" & $aNbPages[$x] & @TAB & $aNbPages[0] & @LF)
ConsoleWrite($Categories[$j] & ";" & $Villes[$i] & ";page-" & ^ ERROR

Func File_Pos()
    Local $File_Categories = @WorkingDir & "\Categories.txt", $File_Infra = @WorkingDir & "\Villes.txt"
    Local $Infra = Null, $Categories = Null

    _FileReadToArray($File_Infra, $Infra)
    If @error Then Exit
    _FileReadToArray($File_Categories, $Categories)
    If @error Then Exit

    For $i = 1 To UBound($Infra) - 1
        For $j = 1 To UBound($Categories) - 1
            $Contenu = _INetGetSource($Categories[$j] & "/" & $Infra[$i] & "/")
            $aNbResultats = StringRegExp($Contenu, '(?i)<span class="count">(\d*)</span>', $STR_REGEXPARRAYMATCH)
            If @error = 0 Then
                If $aNbResultats[0] = 0 Then Return False
                ConsoleWrite("Number of results : " & $aNbResultats[0] & @LF) ; IT WORKS
                $aNbPages = StringRegExp($Contenu, '(?i)"pageToc"(?:.*?)(\d+)<', $STR_REGEXPARRAYMATCH)
                If @error = 0 Then
                    ConsoleWrite("Number of results : " & $aNbPages[0] & @LF) ; IT WORKS
                    For $x = 1 To $aNbPages[0]
                        ConsoleWrite($Categories[$j] & ";" & $Infra[$i] & "/page-"  & $aNbPages[$x] & @TAB & $aNbPages[0] & @LF)
                    Next
                EndIf
            EndIf
        Next
    Next
EndFunc

Re: Boucle sur valeur d'une Regex

Posté : lun. 22 mai 2017 14:48
par jchd
Remplacer
For $x = 1 To $aNbPages[0]
par
For $x = 0 To uBound($aNbPages) - 1

Re: Boucle sur valeur d'une Regex

Posté : lun. 22 mai 2017 16:01
par Master
J'ai déjà essayé mais l'erreur est la même. Je me demande parfois si c'est pas Autoit qui deconne ! :lol:

J'ai également tenté d'attribuer le résultat de la regex $aNbPages[0] à une variable, mais aucun changement.

Re: Boucle sur valeur d'une Regex

Posté : lun. 22 mai 2017 16:45
par Master
J'ai trouvé le problème que c'etait ! la valeur retournée par ma regex est sous format "string". Donc je convertit cette valeur en nombre avec la fonction Number() et ma boucle For fonctionne après !!! :)

Re: Boucle sur valeur d'une Regex

Posté : lun. 22 mai 2017 18:18
par jchd
Etrange !

Code : Tout sélectionner

For $i = 1 To "5"
	ConsoleWrite($i & @LF)
Next

Re: Boucle sur valeur d'une Regex

Posté : lun. 22 mai 2017 19:00
par mikell
Master a écrit : lun. 22 mai 2017 16:45... ma boucle For fonctionne après !!! :)
Etrange !

#include <StringConstants.au3>

$Contenu = "ab5cd6ef7gh"
$aNbPages = StringRegExp($Contenu, "\d+", $STR_REGEXPARRAYMATCH)
ConsoleWrite("Number of results : " & $aNbPages[0] & @LF) ; IT WORKS
For $x = 1 to $aNbPages[0]
   ConsoleWrite("/page-" & $aNbPages[$x] & @LF)
Next
:mrgreen: