Split inclusif et exclusif [Fermé]

Signaler
Messages postés
33
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
4 avril 2021
-
Messages postés
5550
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
12 mai 2021
-
Slt tt le monde,
J'ai mettons un string
$str = je - aime les fraises des - bois
et j'aimerais splitter sur les '-' et sur 'fraises' en gardant 'fraises'
J'ai testé ça:
my @arr = split(/-|(fraises)/,$str);
mais ça me met des composantes undef dans le @arr, aucune idée pourquoi.
Le résultat final que j'aimerais obtenir est donc:

je
aime les
fraises
des
bois

Anyone can help pleaz ??
Merci d'avance

1 réponse

Messages postés
5550
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
12 mai 2021
934
Pas de undef, chez moi. Par contre tu ne gères pas les espaces.

Tu peux utiliser split et retraiter le résultat, en supprimant les tirets et les espaces en trop.

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @list = split(/(\s-\s|\sfraises\s)/, "je - aime les fraises des - bois");
@list = grep(!/\s-\s/, @list);          # remove hyphens from list
for (@list) { s/\sfraises\s/fraises/; } # remove extra spaces around fraises
print Dumper(@list);

donne :
$VAR1 = 'je';
$VAR2 = 'aime les';
$VAR3 = 'fraises';
$VAR4 = 'des';
$VAR5 = 'bois';

Dal