[R] StringregExp Utiliser correctement l'opérateur "?"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

[R] StringregExp Utiliser correctement l'opérateur "?"

#1

Message par SagePourpre »

Bonjour à tous.

J'ai un petit soucis avec une expression régulière.


Le problème vient de $string2

Je dois récupérér une valeur dans un fichier *.htm et parfois, j'ai
"<B>" avant ma valeur, les autres fois il n'y est pas.

Voilà mon expression régulière. (qui marche avec $string mais pas avec $string2)

Code : Tout sélectionner

StringRegExp($string,'(?:Oi)(?:.*)\r\n(?:.*)\r\n(?:.*)\r\n(?:.*)>(?:<B>)(\d*)',1)
Pour régler le problème du "<B>" qui parfois apparait, parfois non, je croyais pouvoir
solutionner ce "caprice" de code en changeant "(?:<B>)" par "(?:<B>)?"

Je me suis basé sur cet extrait de la doc.

"?" The previous character, set or group may or may not appear. Equivalent to {0, 1}

donc, selon ma compréhension de la chose apparemment erronnée, il suffit d'ajouter
un point d'interrogation après un "set" pour signifier qu'il pourrait ne pas être présent.

Mais ça ne fonctionne pas .

Une idée ?


Pour résumer, mon code tel qu'il est permet de récupérer la valeur "109" de $string mais pas
de $string2. J'ai besoin d'être en mesure de solutionner les 2 cas avec la même expression.

(J'ai une solution alternative, consistant à faire disparaître tous les "<B>" du fichier avant
de lancer une expression régulière qui n'aurait plus à en tenir compte mais j'aimerais
le faire en une seule opération, question de rapidité.)

Merci d'avance pour vos suggestions. (Ça fait 3 heures que je penche sur le problème et
je ne suis pas parvenu à dénicher l'information qui me manque quant à l'utilisation de "?" )

Code : Tout sélectionner

#include<array.au3>
$string = '<TD align=left width=150 bgColor=#006699><B>Oi</B></TD>' & @CRLF & '<TD align=left bgColor=#006699><B>Elite Knight</B></TD>' & @CRLF & '<TD align=right width=30 bgColor=#006699><B>160</B></TD>' _
& @CRLF & '<TD align=right width=75 bgColor=#006699><B>109</B></TD></TR>' & @CRLF & '<TR onmouseover="cbc(this, 1)" onmouseout="cbc(this, 0)">'


$string2 = '<TD align=left width=150 bgColor=#006699><B>Oi</B></TD>' & @CRLF & '<TD align=left bgColor=#006699><B>Elite Knight</B></TD>' & @CRLF & '<TD align=right width=30 bgColor=#006699><B>160</B></TD>' _
& @CRLF & '<TD align=right width=75 bgColor=#006699>109</TD></TR>' & @CRLF & '<TR onmouseover="cbc(this, 1)" onmouseout="cbc(this, 0)">'






$arr = StringRegExp($string,'(?:Oi)(?:.*)\r\n(?:.*)\r\n(?:.*)\r\n(?:.*)>(?:<B>)(\d*)',1)
_ArrayDisplay($arr)


Edit : Après quatre heures et + de "gossage intensif" (en bon québécois) ou si vous préférez... Après quatre heures à tourner en rond, usant prématurément tapis et pantoufles, je parvint
à régler le problème en laissant tomber "?" et surtout, en changeant \d* pour \d+

Donc... le problème n'est plus. Merci encore !
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] StringregExp Utiliser correctement l'opérateur "?"

#2

Message par Tlem »

Rassurez moi. Vous avez mis ce message en une seule fois, sans jamais l'avoir édité ?
Car j'ai beau regarder, je ne vois aucune trace d'édition de votre post !!!
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [R] StringregExp Utiliser correctement l'opérateur "?"

#3

Message par SagePourpre »

Non... Je l'ai vraiment édité.

Sinon je ne l'aurais pas posté du tout en m'auto-répondant ainsi.

Cependant, je l'ai édité moins de 10 minutes après l'avoir posté.
Je ne sais pas si ce court délai aurait pu faire en sorte que ça ne
laisse pas de traces de mon édition mais pourtant...
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] StringregExp Utiliser correctement l'opérateur "?"

#4

Message par Tlem »

Humm, dés que je rentre chez moi, je vais regarder ça d'un peut plus près..
Merci.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre