Bonjour je chercherais a faire une expression reguliere qui separerait les chiffres des lettres dans une chaine .
Est ce que quelqu'un pourrait m'orienter?
Merci d'avance
Bonjour je chercherais a faire une expression reguliere qui separerait les chiffres des lettres dans une chaine .
Est ce que quelqu'un pourrait m'orienter?
Merci d'avance
Un exemple :
Mais ta question est un peu vague : qu'attends-tu en sortie de traitement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 my $chaine = "Il est 23 heures et 47 minutes"; my @chiffres = $chaine =~ /(\d)/g; my @lettres = $chaine =~ /([[:alpha:]])/g;
Bonjour,
je suis un peu rouillé en Perl, aussi y a-t-il probablement une meilleure manière de faire mais je procéderais comme ceci :
Ici, ma variable $alphabetic récupère tout ce qui n'est pas numérique, comme par exemple a, b, A, Z mais aussi ;,|\ etc. Faudra affiner si besoin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 use strict; use warnings; my $chaine = "il pleut et chuis bloqué jusqu'à 22h00 au boulot"; # désolé, exemple un peu dur :p my ($numeric, $alphabetic); ($numeric, $alphabetic) = SepareNumAlpha($chaine); sub SepareNumAlpha { my $string = shift(); my $num = ""; my $alpha = ""; @_ = split(//, $string); foreach my $char(@_) { if ($char =~ /[0-9]/) { $num .= $char; } else { $alpha .= $char; } } return ($num, $alpha); }
J'attends maintenant l'intervention d'un expert pour voir sa solution à lui.
Edit : et l'expert est même intervenu avant moi
Merci de ta réponse en tout cas
Par exemple j'ai une entité qui s'appelle p0145
Je veux récupérer dans une variable $lettre=p
$nombre=0145
Salut Arioch
J'ai teste et ca ne fonctionne pas
j'avais essaye un truc comme ca et ca n'avait pas fonctionne non plus .
J'attends une reponse peut etre d'un expert.
Mais merci de ton aide
As-tu testé le code de Philou67430 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 my $chaine = "Il est 23 heures et 47 minutes"; my @chiffres = $chaine =~ /(\d)/g; my @lettres = $chaine =~ /([[:alpha:]])/g; # et pour retrouver les chiffres dans un scalaire et les lettres dans un autre scalaire $chiffres = join("", @chiffres); $lettres = join("", @lettres);
@Nico: il est à peu près impossible de répondre à ce genre de question sans avoir une idée du format des données.
Donne un échantillon représentatif de tes données, en expliquant ce que tu veux en extraire, on pourra t'aider plus efficacement.
Avec les précisions apportées par nico, on peut modifier légèrement ma proposition, mais comme le dit lolo, il faut absolument connaitre le format des données en entrée et le format des données en sortie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 use feature qw(:5.10); my $chaine = "Il est 23 heures et 47 minutes"; my @chiffres = $chaine =~ /(\d+)/g; my @lettres = $chaine =~ /([[:alpha:]]+)/g; say join ",", @chiffres; say join ",", @lettres;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager