Boucle sur valeur d'une Regex

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Master
Niveau 1
Niveau 1
Messages : 3
Enregistré le : lun. 22 mai 2017 14:18
Status : Hors ligne

Boucle sur valeur d'une Regex

#1

Message 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
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2273
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Boucle sur valeur d'une Regex

#2

Message par jchd »

Remplacer
For $x = 1 To $aNbPages[0]
par
For $x = 0 To uBound($aNbPages) - 1
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Master
Niveau 1
Niveau 1
Messages : 3
Enregistré le : lun. 22 mai 2017 14:18
Status : Hors ligne

Re: Boucle sur valeur d'une Regex

#3

Message 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.
Master
Niveau 1
Niveau 1
Messages : 3
Enregistré le : lun. 22 mai 2017 14:18
Status : Hors ligne

Re: Boucle sur valeur d'une Regex

#4

Message 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 !!! :)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2273
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Boucle sur valeur d'une Regex

#5

Message par jchd »

Etrange !

Code : Tout sélectionner

For $i = 1 To "5"
	ConsoleWrite($i & @LF)
Next
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Boucle sur valeur d'une Regex

#6

Message 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:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre