[..] StringRegExp

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Doublerman
Niveau 1
Niveau 1
Messages : 14
Enregistré le : dim. 30 janv. 2011 21:02
Status : Hors ligne

[..] StringRegExp

#1

Message par Doublerman »

Bonjour,

Je voudrais pouvoir extraire ce qui se trouve entre des <p></p> précis d'une page HTML.

C'est à dire celui qui m'intéresse même si il en y a plusieurs.

Exemple :

<p>a</p> <p>b</p> <p>c</p> <p>d</p> <p>E</p>

Je voudrais juste récupérer le E, comment faire ?

Le seul problème c'est que je ne sais pas comment faire étant novice, c'est galère !

MERCI SVP de m'aider.

StringRegExp($sText,'<(?i)p>(.*?)</(?i)p>', 1)
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] StringRegExp

#2

Message par bloodwolff »

Humm impossible de différencier la balises E des autres sans avoir plus de particularité !
Compte skype : bloodwolfff
Doublerman
Niveau 1
Niveau 1
Messages : 14
Enregistré le : dim. 30 janv. 2011 21:02
Status : Hors ligne

Re: [..] StringRegExp

#3

Message par Doublerman »

Merci et si je mettais un ? avant si y'avait une balise <h1></h1> avant le <p>E</p> alors ?


Je voudrais juste récuperer le E, comment faire ?

StringRegExp($sText,'<(?i)p>(.*?)</(?i)p>', 1)

merci
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] StringRegExp

#4

Message par ani »

Est-ce la dernière balise que vous voulez ?

En suivant l'exemple de l'aide on peut arriver à ceux-ci
; on récupére tout ce qui se trouve entre la balise P

Code : Tout sélectionner

$VariableX = StringRegExp($sText,'<p>(.*?)</p>',3)
 
Le stringRegEExp nous renvoie un tableau avec x élément
de là on fait une boucle sur tout ce qu'il a pu trouvé trouvés

Code : Tout sélectionner

For $x = 0 to ubound($VariableX) - 1 
    consolewrite($VariablesX[$x])
Next
 
On commencera la boucle avec l'indice x à 0 (zéro), dans ce cas ci
ubound($VariableX) - 1 nous donnes le nombres d'élément trouvé et on retire un

Pour le dernier élément vous pouvez faire ceux-ci

Code : Tout sélectionner

$stext = "<p>a</p> <p>b</p> <p>c</p> <p>d</p> <p>E</p>"
$v = StringRegExp($stext,"<p>(.*?)</p>",3)
ConsoleWrite($v[ubound($v)-1] & @cr)
 
voilàvoilà ;)
Doublerman
Niveau 1
Niveau 1
Messages : 14
Enregistré le : dim. 30 janv. 2011 21:02
Status : Hors ligne

Re: [..] StringRegExp

#5

Message par Doublerman »

MErci beaucoup !!!!!!!!!!!!!!!!!!!!! j'aurais pu venir vous demander au lieu de perdre mon dimanche !!! merci
Doublerman
Niveau 1
Niveau 1
Messages : 14
Enregistré le : dim. 30 janv. 2011 21:02
Status : Hors ligne

Re: [..] StringRegExp

#6

Message par Doublerman »

juste une question, en faite c'est pas le dernière mais je voudrais par exemple 10 ième de 20 éléments comment je fais ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] StringRegExp

#7

Message par Tlem »

:shock: Vous ne savez pas compter ?
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é".
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] StringRegExp

#8

Message par ani »

On reprend ;)

La fonction StringRegExp nous renverra un tableau.
La fonction Ubound nous renverra les limites supérieur.

La variable qu'on nommera $arrVar sera le conteneur
→ celle-ci contiendra un tableau dont la fonction StringRegExp nous aura retourné

La boucle For ... Next, je la commence toujours à zéro avec comme variable $x ou $i (pour les puristes je parle du i et pas du x).

Donc pour nous retourner l'indice avec comme valeur truc dans tel tableau(array)
on lui indiquera juste une condition, celle-ci ce traduira par :
En speudo code ► Si l'indice vaut 10 alors
En Autoit ► If $x = 10 then

Ce petit exemple te retournera dans un premier temps le nombre de balise trouvé et la seconde sera le 10 élément trouvé.

P.s:je commence la variable à zéro et je m'arrête à neuf ce qui fait bien 10 (^_^")

Code : Tout sélectionner

$sText = "<p>1</p><input bouton machin><a herf=>Yjndke</a><p>2</p><p>3</p><p>4</p><p>5</p><p>6</p><p>7</p><p>8</p><p>9</p><p>10</p><p>11</p><p>12</p>"
$arrVar = StringRegExp($sText,"<p>(.*?)</p>",3)
MsgBox(0,"Arr(ay)Var(ariable)-Tableau d'élement","Nbre de balise <p>?</p> trouvé:" & Ubound(arrVar),5)
For $x = 0 to ubound($arrVar)-1
    if $x = 9 then Msgbox(0,"Titre",$arrVar[x],5)
Next
voilàvoilà

Si çà ne va pas n'hésite pas ;)
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

Re: [..] StringRegExp

#9

Message par FernandG »

Je ne cesse de dire que la patience est un art :wink:
Doublerman
Niveau 1
Niveau 1
Messages : 14
Enregistré le : dim. 30 janv. 2011 21:02
Status : Hors ligne

Re: [..] StringRegExp

#10

Message par Doublerman »

Merci beaucoup Ani le sauveur ! :-)
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] StringRegExp

#11

Message par ani »

ok :p

mais je me suis bien trompé dans l'exemple (précédent message édité) j'avais oublié le tableau qui contenait la variable dans le deuxième message ^^" pour pas que je lise il me retourne 9 tout le temps ^^"
Doublerman
Niveau 1
Niveau 1
Messages : 14
Enregistré le : dim. 30 janv. 2011 21:02
Status : Hors ligne

Re: [..] StringRegExp

#12

Message par Doublerman »

oui mais j'ai compris le principe no souci ! j'ai un second souci mais je vais pas vous faire chier à chaque fois ! Je vais essayer de le résoudre merci
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] StringRegExp

#13

Message par Tlem »

N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
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