Re: Extraction nombre décimaux.

Liste des GroupesRevenir à fcl regexp 
Sujet : Re: Extraction nombre décimaux.
De : schaefer (at) *nospam* alphanet.ch (Marc SCHAEFER)
Groupes : fr.comp.lang.regexp
Date : 24. Oct 2022, 08:53:27
Autres entêtes
Organisation : Posted through news.alphanet.ch
Message-ID : <tj5cp7$qg5$2@shakotay.alphanet.ch>
References : 1 2 3 4
User-Agent : tin/2.4.3-20181224 ("Glen Mhor") (UNIX) (Linux/4.19.0-22-amd64 (x86_64))
Olivier Miakinen <om+news@miakinen.net> wrote:
Je ne sais pas trop comment ça fonctionne en perl, mais en pricipe
ça devrait plutôt créer un tableau du style :
( ("4.5", "", "4", "5", ""), ("-1.2", "-", "1", "2", "") )

En Perl, on a ce qu'on appelle le contexte de liste, ce qui met à plat
les tableaux.  Ce qui permet en une opération de mettre toutes les
occurences (/g) de parenthèses dans le même tableau.

exemple:

$ ./a.pl
bad: schaefer, alphanet.ch, toto, truc.org
good: schaefer@alphanet.ch, toto@truc.org

avec a.pl:

use strict;
use warnings;

my $s = 'schaefer@alphanet.ch toto@truc.org';

my @bad = $s =~ /([^\@\s]+)\@([^\s]+)/g;

print "bad: ", join(', ', @bad), "\n";

my @good = $s =~ /([^\s]+)/g;
#my @good = split /\s+/, $s;
print "good: ", join(', ', @good), "\n";

Du moins si l'item 0 pour chaque capture est la séquence complète qui
a été capturée par la regexp, et si les items 1, 2, 3 et 4 correspondent
à chaque paire de parenthèses capturantes.

En Perl, ça correspond à $1, $2, $3, ... pour chacune des parenthèses.
C'est tout. On peut bien sûr imbriquer une toute grande parenthèse qui
sera alors $1.  $0 en Perl est toujours le nom du programme tel qu'il a
été appelé (équivalent en C de argv[0])

Si l'on n'aime pas ça, on peut aussi utiliser la variante suivante:

my @tableau;

# modifie $s
$s =~ s/([^\@\s]+)\@([^\s]+)/process_it($1, $2)/ge;

avec

   sub process_it {
      my ($user, $domain) = @_;

      push(@tableau, [ $user, $domain ]);
   }

Dans ce cas on aura @tableau = ([ 'schaefer', 'alphanet.ch' ], [ 'toto',
'truc.org' ]) que l'on peut reconvertir en ('schaefer@alphanet.ch',
'toto@truc.org') avec:

   # usage de la variable par défaut $_, ici en tant que
   # référence sur un tableau
   @tableau = map { $_->[0] . '@' . $_->[1] } @tableau;

ou encore remplacer process_it par un simple:

   sub process_it {
      my ($user, $domain) = @_;

      push(@tableau, $user . '@' . $domain);
   }

PS: en Perl () c'est une liste/tableau; [] une référence sur une
    liste/tableau, symétriquement pour les hashes () et {}.

Date Sujet#  Auteur
23 Oct 22 * Extraction nombre décimaux.12kurtz le pirate
23 Oct 22 +* Re: Extraction nombre décimaux.6Olivier Miakinen
23 Oct 22 i`* Re: Extraction nombre décimaux.5Marc SCHAEFER
23 Oct 22 i +* Re: Extraction nombre décimaux.2Richard Hachel
23 Oct 22 i i`- Re: Extraction nombre décimaux.1Olivier Miakinen
23 Oct 22 i `* Re: Extraction nombre décimaux.2Olivier Miakinen
24 Oct 22 i  `- Re: Extraction nombre décimaux.1Marc SCHAEFER
23 Oct 22 +- Re: Extraction nombre décimaux.1Marc SCHAEFER
24 Oct 22 `* Re: Extraction nombre décimaux.4kurtz le pirate
24 Oct 22  `* Re: Extraction nombre décimaux.3Olivier Miakinen
25 Oct 22   `* Re: Extraction nombre décimaux.2kurtz le pirate
26 Oct 22    `- Re: Extraction nombre décimaux.1Olivier Miakinen

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal