Nous cherchons à isoler une partie de phrase sachant que le séparateur est l’espace et que nous souhaitons la plus petite chaîne avant le blanc.

PERL

Connecté au clavier, je tape donc fébrilement mon expression régulière tant de fois écrite :

#!/usr/bin/perl -w

my $fic="7,1M /home/eric/materiel/driver reseau/toto.fkv";
$fic=~ /^.*\s(.*)/;
print $1."\n";

ce qui me donne

reseau/toto.fkv

au lieu de

/home/eric/materiel/driver reseau/toto.fkv

Ce qui se résume en fait à rechercher non pas la plus longue occurence correspondant à notre expression régulière mais la plus petite ! Heureusement Perl is your friend et * ? permet d’avoir ce que l’on souhaite.

#!/usr/bin/perl -w

my $fic="7,1M /home/eric/materiel/driver reseau/toto.fkv";
$fic=~ /^.*?\s(.*)/;
print $1."\n";
/home/eric/materiel/driver reseau/toto.fkv

Python

#!/usr/bin/python3

import re

txt="7,1M /home/eric/materiel/driver reseau/toto.fkv"
x = re.search("^.*?\s(.*)$", txt)
print (x.group(1))

Accueil > Notes Techniques > PERL > [PERL / Python] La plus petit occurence dans une expression régulière