OVH Cloud OVH Cloud

split complexe

4 réponses
Avatar
Nicolas
Bonjour,

j'ai une chaine su type (A1,B1,C1)(A2,B2,C2)...(An,Bn,Cn)

Avec les Xi pouvant contenir un peu n'importe quoi (des commandes latex)
sauf ')(' consécutif.

J'aimerai transformer cela en un hachage de tableaux avec comme clé Ai
et Bi et Ci dans le tableau.

Je n'y arrive pas. Je n'arrive même pas à spliter sur )(.

Merci.

--
Powered .~.
by Linux /V\ Enlever
------ // \\ Take off
solutions for /( )\ BULBA
smart penguins ^`~'^

4 réponses

Avatar
Ezechiel

Bonjour,

j'ai une chaine su type (A1,B1,C1)(A2,B2,C2)...(An,Bn,Cn)

Avec les Xi pouvant contenir un peu n'importe quoi (des commandes latex)
sauf ')(' consécutif.

J'aimerai transformer cela en un hachage de tableaux avec comme clé Ai
et Bi et Ci dans le tableau.

Je n'y arrive pas. Je n'arrive même pas à spliter sur )(.

Merci.



Salut,

La fonction split utilise des expressions régulières pour découper tes
chaines, tu dois donc despécifier tes parenthèses (qui ont un sens en
RegExp) si tu veux découper ta chaine.
Tu peux donc faire quelque chose dans le genre de

split(/(|)(|)/, ...)

pour récuperer un tableau de chaines du type "A1,B1,C1" et ensuite
splitter sur les virgules.

J'espère que ça t'avance un peu.

--
Ezechiel

Avatar
Nicolas

split(/(|)(|)/, ...)


Merci.
Ca marche sauf que le premier truc obtenu est une chaine vide ensuite
les autres arrive comme il faut, puis encore une chaine vide pour finir.

Nicolas.

--
Powered .~.
by Linux /V Enlever
------ // Take off
solutions for /( ) BULBA
smart penguins ^`~'^

Avatar
Martin
Allo,

C'est pour cela que j'aurais préféré faire un match plutôt qu'un split.

my @commandes = $ma_str =~ /(.*?)/g;

Avec le /g, tous les matchs trouvés dans $ma_str se retrouveront dans
@commandes.

Martin

"Nicolas" a écrit dans le message de news:
43ea680f$0$1146$

split(/(|)(|)/, ...)


Merci.
Ca marche sauf que le premier truc obtenu est une chaine vide ensuite les
autres arrive comme il faut, puis encore une chaine vide pour finir.

Nicolas.

--
Powered .~.
by Linux /V Enlever
------ // Take off
solutions for /( ) BULBA
smart penguins ^`~'^



Avatar
Nicolas
Allo,

C'est pour cela que j'aurais préféré faire un match plutôt qu'un split.

my @commandes = $ma_str =~ /(.*?)/g;

Avec le /g, tous les matchs trouvés dans $ma_str se retrouveront dans
@commandes.


Merci, j'ai compris d'où venait mon erreur ,je m'obstinais à oublier les
// dans la commande split.

Merci à tous.

Nicolas.

--
Powered .~.
by Linux /V Enlever
------ // Take off
solutions for /( ) BULBA
smart penguins ^`~'^