Expressions Regulières PERL
Résolu/Fermé
maxinfos
-
8 oct. 2005 à 16:27
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 9 oct. 2005 à 14:56
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 9 oct. 2005 à 14:56
A voir également:
- Expressions Regulières PERL
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- Perl Makefile.PL - Forum Perl
- Tableau(perl) ✓ - Forum Perl
- Expressions francaises - Forum Études / Formation High-Tech
4 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
8 oct. 2005 à 16:56
8 oct. 2005 à 16:56
Salut,
En fait l'expression la plus fidèle que j'ai trouvé serait:
=>L'expression doit commencer par une majuscule suivie de 1 ou plusieurs minuscules.
Sans l'accent circonflexe au début, il ira chercher ta majuscule partout.
Donc:
En fait l'expression la plus fidèle que j'ai trouvé serait:
^[A-Z]{1}[a-z]+
=>L'expression doit commencer par une majuscule suivie de 1 ou plusieurs minuscules.
Sans l'accent circonflexe au début, il ira chercher ta majuscule partout.
Donc:
if( $prenom =~ "^[A-Z]{1}[a-z]+" ) { print ("oui"); } else { print ("non"); }
J'ai encore une autre question, car j'ai pourtant pris en compte les réponses précédentes, mais je bloque toujours
Cette fois ci, je dois verifier une date de naissance de la forme
(j)j-(m)m-(aa)aa
Donc plusieurs cas possibles :
05-05-1985, 5-5-85, 05-5-85, 5-05-85, 5-5-1985 etc ...
Merci pour votre précieuse aide !!!
Cette fois ci, je dois verifier une date de naissance de la forme
(j)j-(m)m-(aa)aa
Donc plusieurs cas possibles :
05-05-1985, 5-5-85, 05-5-85, 5-05-85, 5-5-1985 etc ...
Merci pour votre précieuse aide !!!
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 oct. 2005 à 14:18
9 oct. 2005 à 14:18
Salut,
En ce cas on peut avoir les possibilités suivantes :
Les jours
01 02 03 04 05 06 07 08 09
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 29
30 31
Les mois
01 02 03 04 05 06 07 08 09
1 2 3 4 5 6 7 8 9
10 11 12
et pour les année on aura un group de 2 ou 4 chiffres
L'integrale
la classe [0-9] tu peux la ramplacer par \d
Voilà un script en perl pour tester
Tu peux utiliser qr// pour mieux maintenir tes regex.
Dans la re je suppose que la date et separée d'autre mots.
Ex:
Date de naissance 01-01-2005 du ........
Mais ça marche dans le cas :
La date de regex et 09-10-2005.
Tu auras le message d'erreur dans le cas où une date est
32-01-2005
01-13-2005
01-01-005
01-01-20005
Je n'ai pas tester toutes les possibilités.
lami20j
P.S. A utiliser en fonction de tes besoins.
Et n'oublies pas TMTOWTDI.
En ce cas on peut avoir les possibilités suivantes :
Les jours
01 02 03 04 05 06 07 08 09
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 29
30 31
\b(0?[1-9]-|[12][0-9]-|3[01]-)
Les mois
01 02 03 04 05 06 07 08 09
1 2 3 4 5 6 7 8 9
10 11 12
(0?[1-9]-|1[0-2]-)
et pour les année on aura un group de 2 ou 4 chiffres
(\d{2}|\d{4})\b
L'integrale
\b(0?[1-9]-|[12][0-9]-|3[01]-)(0?[1-9]-|1[0-2]-)(\d{2}|\d{4})\b
la classe [0-9] tu peux la ramplacer par \d
Voilà un script en perl pour tester
#! /usr/bin/perl -w use strict; print "Entrez une date format [ (j)j-(m)m-(aa)aa ] : \n"; chomp(my $jour = <STDIN>); if ($jour =~ /\b(0?[1-9]-|[12][0-9]-|3[01]-)(0?[1-9]-|1[0-2]-)(\d{2}|\d{4})\b/){ print "date ok : $1$2$3\n"; }else{ print "Ce n'est pas le bon format [ (j)j-(m)m-(aa)aa ]. Ou peut être vous avez depassé l'interval des valeurs pour les jours[1-31] ou mois[1-12]\n"; }
Tu peux utiliser qr// pour mieux maintenir tes regex.
Dans la re je suppose que la date et separée d'autre mots.
Ex:
Date de naissance 01-01-2005 du ........
Mais ça marche dans le cas :
La date de regex et 09-10-2005.
Tu auras le message d'erreur dans le cas où une date est
32-01-2005
01-13-2005
01-01-005
01-01-20005
Je n'ai pas tester toutes les possibilités.
lami20j
P.S. A utiliser en fonction de tes besoins.
Et n'oublies pas TMTOWTDI.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 oct. 2005 à 14:56
9 oct. 2005 à 14:56
Salut,
Si je peux me permetre un petit conseil concernant les classes de caractères.
Une clase des caractères a pour le but de faire reconnaître un caractère parmi les plusieurs.
qu'une chaine de caractère commence par une majuscule et que la suite de la chaine est en minuscule
En ce cas pour reconnaître le 1er caractère en majuscules ça suffit [A-Z].
Le quantificateur d'intervalle {1} est inutile.
lami20j
Si je peux me permetre un petit conseil concernant les classes de caractères.
^[A-Z]{1}[a-z]+
Une clase des caractères a pour le but de faire reconnaître un caractère parmi les plusieurs.
qu'une chaine de caractère commence par une majuscule et que la suite de la chaine est en minuscule
En ce cas pour reconnaître le 1er caractère en majuscules ça suffit [A-Z].
Le quantificateur d'intervalle {1} est inutile.
^[A-Z][a-z]+$
lami20j
8 oct. 2005 à 18:17
Dans ce cas, ne faudrait-il pas mettre également le caractère de fin de chaîne sans quoi la vérification s'arrête à la 2e lettre ?