Expression rationnelle pour un remplacement

Le
denebet
Bonjour,


Je vous prie d'excuser le côté "consommateur" de ma demande, mais après
l'essai de différents tuto pour les expressions régulières, je n'y arrive
pas et je dois finir pour ce soir.
J'ai une série de ligne dans un fichier du type

http://archive.ubuntu.com/ubuntu/pool/main/a/aalib/libaa1_1.4p5-32_i386.deb
libaa1_1.4p5-32_i386.deb 57348 dacfc0cd800354d16ebc658faac68f9a
http://archive.ubuntu.com/ubuntu/pool/main/a/abiword/abiword_2.4.6-2ubuntu2_i386.deb
abiword_2.4.6-2ubuntu2_i386.deb 2640872 19baff2f1c8522868253c1dc9d8976b8

C'est à dire, séparés par des espaces :
[URL complète du fichier] [nom du paquet] [taille] [somme MD5].

J'aurai besoin de virer tout ce qui suit l'url du fichier, en gardant le
retour chariot.
Quelle est l'expression régulière qui pourrait faire cela ?

Merci d'avance,

Alain
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thomas vO
Le #153433
bonjour,

À (at) Wed, 24 Oct 2007 14:37:13 +0200,
denebet
C'est à dire, séparés par des espaces :
[URL complète du fichier] [nom du paquet] [taille] [somme MD5].

J'aurai besoin de virer tout ce qui suit l'url du fichier, en gardant le
retour chariot.
Quelle est l'expression régulière qui pourrait faire cela ?


pas trop testé, mais :

s/^(.[^s]*)s.*$/$1/

a l'air de convenir...

--
Thomas vO -
denebet
Le #153432
Thomas vO wrote:

s/^(.[^s]*)s.*$/$1/


Nickel !

Merci, et bonne journée.

Alain

Paul Gaborit
Le #153342
À (at) Wed, 24 Oct 2007 14:37:13 +0200,
denebet
J'ai une série de ligne dans un fichier du type

http://archive.ubuntu.com/ubuntu/pool/main/a/aalib/libaa1_1.4p5-32_i386.deb
libaa1_1.4p5-32_i386.deb 57348 dacfc0cd800354d16ebc658faac68f9a
http://archive.ubuntu.com/ubuntu/pool/main/a/abiword/abiword_2.4.6-2ubuntu2_i386.deb
abiword_2.4.6-2ubuntu2_i386.deb 2640872 19baff2f1c8522868253c1dc9d8976b8

C'est à dire, séparés par des espaces :
[URL complète du fichier] [nom du paquet] [taille] [somme MD5].

J'aurai besoin de virer tout ce qui suit l'url du fichier, en gardant le
retour chariot.
Quelle est l'expression régulière qui pourrait faire cela ?


Inutile d'utiliser une expression régulière pour cela. On peut
utiliser 'index' et 'substr' (en supposant que la ligne à traiter est
dans $ligne) :

my $newligne = substr $line, 0, index $ligne, ' ';
$newligne .= "n";

La fonction 'index' est toujours beaucoup plus rapide qu'une
expression rationnelle (si on cherche une chaîne fixe évidemment).

--
Paul Gaborit - Perl en français -
Paul Gaborit
Le #153341
À (at) Wed, 24 Oct 2007 17:01:15 +0200,
Paul Gaborit
Inutile d'utiliser une expression régulière pour cela. On peut
utiliser 'index' et 'substr' (en supposant que la ligne à traiter est
dans $ligne) :

my $newligne = substr $line, 0, index $ligne, ' ';
$newligne .= "n";


Ce qui donne, avec les bons noms de variables :

my $newligne = substr $ligne, 0, index $ligne, ' ';
$newligne .= "n";


--
Paul Gaborit - Perl en français -
Stéphane Müller
Le #153340
Inutile d'utiliser une expression régulière pour cela. On peut
utiliser 'index' et 'substr' (en supposant que la ligne à
traiter est
dans $ligne) :

my $newligne = substr $line, 0, index $ligne, ' ';
$newligne .= "n";


Perso, j'aurai eu tendance à utiliser split:

my $newligne = (split ' ',$line)[0] . "n";

Est-ce moins efficace ?

Paul Gaborit
Le #153339
À (at) Thu, 25 Oct 2007 10:06:19 +0200,
"Stéphane Müller"
Inutile d'utiliser une expression régulière pour cela. On peut
utiliser 'index' et 'substr' (en supposant que la ligne à
traiter est
dans $ligne) :

my $newligne = substr $line, 0, index $ligne, ' ';
$newligne .= "n";


Perso, j'aurai eu tendance à utiliser split:

my $newligne = (split ' ',$line)[0] . "n";

Est-ce moins efficace ?


À une époque, ça l'était (moins efficace) car le séparateur de 'split'
est potentiellement une expression rationnelle. Mais il est fort
possible que les optimisations sous-jacentes rendent cela équivalent...

Il faudrait faire quelques mesures de performances. ;-)

--
Paul Gaborit - Perl en français -

Publicité
Poster une réponse
Anonyme