Split inclusif et exclusif

Fermé
JamieMacUloth Messages postés 43 Date d'inscription jeudi 16 février 2017 Statut Membre Dernière intervention 6 juin 2022 - 3 juil. 2017 à 15:12
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 3 juil. 2017 à 17:59
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
A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
3 juil. 2017 à 17:59
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
0