Page 1 sur 1

[..] RegExp !

Posté : jeu. 17 sept. 2009 16:01
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

Re: [..] RegExp !

Posté : jeu. 17 sept. 2009 17:01
par jbnh
Encore plus facile avec stringbetween (voir doc et recherche du forum !)

Re: [..] RegExp !

Posté : jeu. 17 sept. 2009 17:09
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 ?

Re: [..] RegExp !

Posté : jeu. 17 sept. 2009 19:18
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])

Re: [..] RegExp !

Posté : jeu. 17 sept. 2009 19:21
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 ;)

Re: [..] RegExp !

Posté : ven. 18 sept. 2009 09:25
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.

Re: [..] RegExp !

Posté : ven. 18 sept. 2009 20:02
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, '<', "")

Re: [..] RegExp !

Posté : mar. 29 sept. 2009 21:03
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