[..] RegExp !

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
OmegAMRS
Niveau 4
Niveau 4
Messages : 54
Enregistré le : mar. 15 sept. 2009 09:37
Status : Hors ligne

[..] RegExp !

#1

Message par OmegAMRS »

Bonjour,

j'ai un p'tit souci d'expressions régulières, ça fait trop longtemps que j'ai pas manipulé, j'y arrive plus :oops: :x

dans cette chaîne cible"><option value="5147">Explorator 1 (F5147)< je voudrai extraire Explorator 1 (F5147)


et dans celle-ci cible"> <option value="5323">Terra 1< , 5323 Terra 1

merci d'avance aux pros des regExp ;)

OmegA
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] RegExp !

#2

Message par jbnh »

Encore plus facile avec stringbetween (voir doc et recherche du forum !)
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
OmegAMRS
Niveau 4
Niveau 4
Messages : 54
Enregistré le : mar. 15 sept. 2009 09:37
Status : Hors ligne

Re: [..] RegExp !

#3

Message par OmegAMRS »

ah c'est pas idiot ça, merci , j'y avais pô pensé !

Edit : sauf que, sauf que ... il peut y avoir moultes caractères en plus dans ma chaîne :s
notamment des saut de lignes entre cible"> et <option value="5323">Terra 1<

donc :arrow: obligé d'utiliser un regExp

une idée ?
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] RegExp !

#4

Message par orax »

Code : Tout sélectionner

$a=StringRegExp('cible"><option value="5147">Explorator 1 (F5147)<','(?is)cible["'']>.*?<option value=["'']5147["'']>(.+?)<',3)
MsgBox(0,"",$a[0])

$a=StringRegExp('cible"> <option value="5323">Terra 1<','(?is)cible["'']>.*?<option value=["''](.+?)["'']>(.+?)<',3)
MsgBox(0,$a[0],$a[1])
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] RegExp !

#5

Message par Iste »

Essaye avec cela :

Code : Tout sélectionner

'cible">.*?<option value="5147">(.*?)<'
.* signifiant : 'peut etre des truc (mais pas de retour a la ligne)' et le ? placé a ou il est dit 'et tu reprend au premier '<opt[...]' que tu trouve
Peut etre faudra t-il mettre le 1er .*? entre parenthèse, je suis pas tres bon pour les regexp :$
mais dans tout les cas, _ArrayDisplay est ton ami ;)
Signez ici
OmegAMRS
Niveau 4
Niveau 4
Messages : 54
Enregistré le : mar. 15 sept. 2009 09:37
Status : Hors ligne

Re: [..] RegExp !

#6

Message par OmegAMRS »

merci beaucoup à vous deux , je vais testé tout ça dans la journée
Edit :

Code : Tout sélectionner

$a=StringRegExp('cible"><option value="5147">Explorator 1 (F5147)<','(?is)cible["'']>.*?<option value=["'']5147["'']>(.+?)<',3)
MsgBox(0,"",$a[0])

$a=StringRegExp('cible"> <option value="5323">Terra 1<','(?is)cible["'']>.*?<option value=["''](.+?)["'']>(.+?)<',3)
MsgBox(0,$a[0],$a[1])
ah oui mais en fait j'ai oublié de préciser que les chaînes "5147" , "Explorator 1 (F5147)" et "5323" et "Terra 1"
étaient variables :s désolé, ça me parraissait évident parce que j'ai le nez sur mon problème et mon code, alors que ça ne l'est pas du tout.
kay69
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 03 sept. 2009 14:56
Status : Hors ligne

Re: [..] RegExp !

#7

Message par kay69 »

Et avec sa ?

Code : Tout sélectionner

$Chaine = 'cible"> <option value="5323">Terra 1<'

$Split = StringSplit( $Chaine, "value=", 1)
$Valeur = StringReplace( $Split[2], '"', "")
$Valeur = StringReplace( $Valeur, '>', " ")
$Valeur = StringReplace( $Valeur, '<', "")
Avatar du membre
BugFix
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 29 sept. 2009 20:53
Localisation : Germany
Status : Hors ligne

Re: [..] RegExp !

#8

Message par BugFix »

Hi, my first post on frensh board. :wink:
I understand frensh language a little, but most things are clear by reading code.

Use following code to solve your problem:

Code : Tout sélectionner

$str1 = 'cible"><option value="5147">Explorator 1 (F5147)<'
$return = StringRegExpReplace($str1, '(\w+"><\w+\s\w+="\d+">)(\w+\s\d+\s\(\w\d+\))<', '$2')
ConsoleWrite($return & @CRLF) ; ==> Explorator 1 (F5147)

$str2 = 'cible"> <option value="5323">Terra 1<'
$return = StringRegExpReplace($str2, '(\w+">\s*<\w+\s\w+=")(\d+)("\>)(\w+\s\d)<', '$2 $4')
ConsoleWrite($return & @CRLF) ; ==> 5323 Terra 1
 
Image
Répondre