Expressions régulières - longuer d'une chaîne
Caddy
-
hibou_4ce_rouge Messages postés 1 Statut Membre -
hibou_4ce_rouge Messages postés 1 Statut Membre -
Bonjour,
J'ai un petit problème. je me demande s'il est possible d'écrire une expression régulière vérifiant la longueur d'une chaîne. J'aimerais vérifier qu'une chaîne ne contient que 4 chiffres.
[0-9]{4} ne convient pas tout à fait car elle vérifie seulement qu'une chaîne contient une suite de 4 chiffres mais ne limite pas sa longueur à 4.
Merci pour vos propositions.
J'ai un petit problème. je me demande s'il est possible d'écrire une expression régulière vérifiant la longueur d'une chaîne. J'aimerais vérifier qu'une chaîne ne contient que 4 chiffres.
[0-9]{4} ne convient pas tout à fait car elle vérifie seulement qu'une chaîne contient une suite de 4 chiffres mais ne limite pas sa longueur à 4.
Merci pour vos propositions.
A voir également:
- Regex taille chaine
- Comment réduire la taille d'un fichier - Guide
- Chaine tnt gratuite sur mobile - Guide
- Reduire taille image - Guide
- Plus de chaine tv - Guide
- Afficher taille dossier windows - Guide
13 réponses
Je pense qu'on s'égare. La question de Caddy avait l'air clair, mais peut être que je l'ai mal comprise.
La discussion commence à virer au débat et ça me met un peu mal à l'aise.
On va laisser Caddy revenir et dire réellement ce qu'il veut.
P.S : Je trouve ta solution super... Et un regex, ça s'applique généralement à une chaine, pas a une ligne...
La discussion commence à virer au débat et ça me met un peu mal à l'aise.
On va laisser Caddy revenir et dire réellement ce qu'il veut.
P.S : Je trouve ta solution super... Et un regex, ça s'applique généralement à une chaine, pas a une ligne...
Heu...
Je comprends pas très bien la réponse.
J'aimerais juste avoir l'expression régulière (si c'est possible) qui vérifie la longueur d'une chaîne de caractères (de longueur 4 et qui contient 4 chiffres), quel que soir le langage.
Je comprends pas très bien la réponse.
J'aimerais juste avoir l'expression régulière (si c'est possible) qui vérifie la longueur d'une chaîne de caractères (de longueur 4 et qui contient 4 chiffres), quel que soir le langage.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Par exemple
Tu dois encrer la regex avec les caractères limite mot pour obtenir exactement 4 caractères (chiffres dans ton cas)
Par exemple
~$ echo 1234 5678 abc1234 abc123456 123456789| perl -ne 'while(/\b([0-9]{4})\b/g){ print $1, " "}print "\n"'
1234 5678
$ echo 1234 5678 abc1234 abc123456 123456789| tr ' ' '\n'
1234
5678
abc1234
abc123456
123456789
$ echo 1234 5678 abc1234 abc123456 123456789| tr ' ' '\n' |grep -Eo '\b[0-9]{4}\b'
1234
5678
Tu dois encrer la regex avec les caractères limite mot pour obtenir exactement 4 caractères (chiffres dans ton cas)
En fait simplement l'expression de ce que vous demandé depend du logiciel que vous utilisé!
Excel, C++, java, Sql ...
Excel, C++, java, Sql ...
je me demande s'il est possible d'écrire une expression régulière vérifiant la longueur d'une chaîne...
Pas une ligne, mais juste une chaine...
Dans le cas où il voudrait adapter ça à une ligne contenant plusieurs chaine, il n'aura qu'a faire un split sur la ligne par rapport au caractère qui servira de séparateur de chaine, et ensuite tester le REGEX avec chaque élément de son tableau.
Pas une ligne, mais juste une chaine...
Dans le cas où il voudrait adapter ça à une ligne contenant plusieurs chaine, il n'aura qu'a faire un split sur la ligne par rapport au caractère qui servira de séparateur de chaine, et ensuite tester le REGEX avec chaque élément de son tableau.
Re,
il n'aura qu'a faire un split sur la ligne par rapport au caractère qui servira de séparateur de chaine, et ensuite
Faire un split quand on peut appliquer directement la regex c'est un peu vague.
On ne connais pas le séparateur qui n'est pas forcement un espace, il peut avoir des tabulations et signes de punctuations.
En utilisant les caractère debut/fin mot que ça soir juste une chaine par ligne ou plusieurs alors ça marchera
Encre la regex entre ^ et $ n'acceptera qu'une chaîne (motif) par ligne.
il n'aura qu'a faire un split sur la ligne par rapport au caractère qui servira de séparateur de chaine, et ensuite
Faire un split quand on peut appliquer directement la regex c'est un peu vague.
On ne connais pas le séparateur qui n'est pas forcement un espace, il peut avoir des tabulations et signes de punctuations.
En utilisant les caractère debut/fin mot que ça soir juste une chaine par ligne ou plusieurs alors ça marchera
Encre la regex entre ^ et $ n'acceptera qu'une chaîne (motif) par ligne.
Re,
Ne dit pas que ça "n'importe quoi 1243 et encore 4567" n'est pas une chaîne ;-)
Et un regex, ça s'applique généralement à une chaine, pas a une ligne...
Une regex s'applique à une chaine, je n'ai pas dit le contraire.
Pour allez plus loin, regex permet de trouver une ou plusieurs correspondances dans une chaîne.
Une ligne c'est une chaîne de caractères qui se fini par un caractère de saut de ligne.
Disons que je me suis peut être mal exprimé, je te l'accord.
En fait ta regex s'applique à une ligne vu que tu cherches la fin de ligne avec $
Donc tu obliges la correspondance être une ligne.
Je suis plus clair maintenant? ;-)
Ne dit pas que ça "n'importe quoi 1243 et encore 4567" n'est pas une chaîne ;-)
Et un regex, ça s'applique généralement à une chaine, pas a une ligne...
Une regex s'applique à une chaine, je n'ai pas dit le contraire.
Pour allez plus loin, regex permet de trouver une ou plusieurs correspondances dans une chaîne.
Une ligne c'est une chaîne de caractères qui se fini par un caractère de saut de ligne.
Disons que je me suis peut être mal exprimé, je te l'accord.
En fait ta regex s'applique à une ligne vu que tu cherches la fin de ligne avec $
Donc tu obliges la correspondance être une ligne.
Je suis plus clair maintenant? ;-)
Coucou!
Voila, je voulais vérifier qu'une chaine non seulement :
ne contienne que des chiffres mais aussi, a une longueur égale à 4.
Alors, j'ai essayé la solution proposée par Michael-Ange
Merci pour vos reponses.
Voila, je voulais vérifier qu'une chaine non seulement :
ne contienne que des chiffres mais aussi, a une longueur égale à 4.
Alors, j'ai essayé la solution proposée par Michael-Ange
^[0-9]{4}$ qui semble parfaitement bien marcher.
Merci pour vos reponses.
Re,
Bien sûr qu'elle fonctionne.
Mais le concepts de chaîne est ligne il faut les assimilé.
Quand on fait ^motif$ ça veut dire que non seulement la chaîne a la longueur 4 et qu'elle contient des chiffres mais qu'il y a une seule correspondance par ligne ce que tu n'as pas précisé c'est pour ça que j'ai pensé à une solution plus générique qui ne mets pas en doute la solution pertinente de Michael-Ange.
Il faut aussi prendre l'habitude de préciser aussi avec quelle application veut tu implémenter puisque les regex différent en fonction de l'implémentation (logiciel, langage).
J'aurai pu te proposer par exemple ^\d{4}$ mais ça n'est pas reconnu par tout.
Le jour ou tu cherches plusieurs correspondances dans une chaîne alors pense aux limites de mots. puisque ^motif$ ne te donneras pas le résultat voulu.
Sur ce coup Michael_Ange a été devin ;-)
Bien sûr qu'elle fonctionne.
Mais le concepts de chaîne est ligne il faut les assimilé.
Quand on fait ^motif$ ça veut dire que non seulement la chaîne a la longueur 4 et qu'elle contient des chiffres mais qu'il y a une seule correspondance par ligne ce que tu n'as pas précisé c'est pour ça que j'ai pensé à une solution plus générique qui ne mets pas en doute la solution pertinente de Michael-Ange.
Il faut aussi prendre l'habitude de préciser aussi avec quelle application veut tu implémenter puisque les regex différent en fonction de l'implémentation (logiciel, langage).
J'aurai pu te proposer par exemple ^\d{4}$ mais ça n'est pas reconnu par tout.
Le jour ou tu cherches plusieurs correspondances dans une chaîne alors pense aux limites de mots. puisque ^motif$ ne te donneras pas le résultat voulu.
Sur ce coup Michael_Ange a été devin ;-)
Content que t'es trouvé ta réponse, mais comme l'a dit lami20j, la prochaine fois faudra être un peu plus précis (langage).
Je crois que c'est ce que Yofa essayait de te faire comprendre.
Je crois que c'est ce que Yofa essayait de te faire comprendre.
Bonjour,
Le sujet est très vieux mais j'ai trouvé une solution alors je la poste.
Je suppose que tu utilisais Notepad++ et que tu faisais t'es expressions avec rechercher/remplacer.
Je n'ai pas trouvé comment vérifier la longueur d'une chaîne mais tu peux ajouter à la vérification des caractères avant et après tes 4 chiffres.
C'est à dire, mettons que tu as des colonnes séparés par des tabulations avec des séries de chiffres de différentes longueurs et que tu veux seulement une série de 4 chiffres.
Tu vas inclure dans ta recherche une tabulation avant et une après tes 4 chiffres, comme ceci :
\t[0-9]{4}\t
Notepad cherchera ainsi des occurrence de ce genre "tab1234tab".
ça peut marcher avec des espaces ou autres caractères de séparation.
Voilà,
j'espère que ça en aidera certain.
Le sujet est très vieux mais j'ai trouvé une solution alors je la poste.
Je suppose que tu utilisais Notepad++ et que tu faisais t'es expressions avec rechercher/remplacer.
Je n'ai pas trouvé comment vérifier la longueur d'une chaîne mais tu peux ajouter à la vérification des caractères avant et après tes 4 chiffres.
C'est à dire, mettons que tu as des colonnes séparés par des tabulations avec des séries de chiffres de différentes longueurs et que tu veux seulement une série de 4 chiffres.
Tu vas inclure dans ta recherche une tabulation avant et une après tes 4 chiffres, comme ceci :
\t[0-9]{4}\t
Notepad cherchera ainsi des occurrence de ce genre "tab1234tab".
ça peut marcher avec des espaces ou autres caractères de séparation.
Voilà,
j'espère que ça en aidera certain.
Oui, mais en ce cas il limite la longueur de la ligne et pas de la chaîne.
Ca ne marche pas si on a une ligne "1234 et encore 4567 et encore 6789"
En revanche si la ligne ne doit contenir que une chaîne de 4 chiffres (il n'a pas précisé ;-) alors c'est ok.
Selon son post, je crois que sa chaine ne doit contenir que 4 chiffres.
Oui mais pas la ligne.
Une ligne peux contenir plusieurs chaines de caractères, non?
^ - début de ligne et début de chaine (ok)
$ - fin de ligne avant le caractère de saute de ligne; $ peut correspondre quelque part dans la chaîne si est seulement la chaine contient d'autres caractères de saut de ligne et si l'implémentation de regex le permets.