Aide pour déchiffrer une expression régulière
Résolu/Fermé
darkdog85
Messages postés
13
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
27 novembre 2012
-
2 déc. 2010 à 22:05
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 3 déc. 2010 à 20:15
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 3 déc. 2010 à 20:15
A voir également:
- Aide pour déchiffrer une expression régulière
- Comment déchiffrer un coupon masqué - Forum Loisirs / Divertissements
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Coupon acheté chez le buraliste inutilisable 1 minute après - Forum Consommation & Internet
- Déchiffrer écriture médecin - Accueil - Guide technologies
- Expression de recherche - Guide
4 réponses
scriptiz
Messages postés
1424
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
14 septembre 2023
425
2 déc. 2010 à 22:56
2 déc. 2010 à 22:56
^[a-z0-9]+ qui commence par une série de lettre entre a et z et de chiffres entre 0-9 (minimum 1)
^ = commence
[a-z0-9] soit une lettre entre a et z soit un chiffre entre 0 et 9
+ une fois minimum mais plusieurs fois si on veut
([_|.|-]{1}[a-z0-9]+)* qui contient soit 1 seul _ ou . ou - et de nouveaux des lettres et des chiffres (minimum 1), le tout soit 0 fois, soit plusieurs fois.
[_|.|-] soit _ soit . soit -
{1} une seule fois
[a-z0-9]+ pareil qu'avant
@ il faut qu'il y ait le caractères @
[a-z0-9]+ pareil qu'avant
([_|.|-]{1}[a-z0-9]+)* pareil qu'avant
[.]{1} un point et un seul
[a-z]{2,6}$ se termine par entre 2 et 6 caractères alphabétiques
[a-z] des caractères entre a et z
{2,6} un nombre de ces caractères entre 2 et 6
$ indique la fin de la chaine de caractères.
Voilà j'espère avoir été claire, ce n'est pas facile d'expliquer en condensé tout ça, le mieux à faire c'est que tu lise un cours sur les expressions régulières sur internet (sur developpez il y en a).
^ = commence
[a-z0-9] soit une lettre entre a et z soit un chiffre entre 0 et 9
+ une fois minimum mais plusieurs fois si on veut
([_|.|-]{1}[a-z0-9]+)* qui contient soit 1 seul _ ou . ou - et de nouveaux des lettres et des chiffres (minimum 1), le tout soit 0 fois, soit plusieurs fois.
[_|.|-] soit _ soit . soit -
{1} une seule fois
[a-z0-9]+ pareil qu'avant
@ il faut qu'il y ait le caractères @
[a-z0-9]+ pareil qu'avant
([_|.|-]{1}[a-z0-9]+)* pareil qu'avant
[.]{1} un point et un seul
[a-z]{2,6}$ se termine par entre 2 et 6 caractères alphabétiques
[a-z] des caractères entre a et z
{2,6} un nombre de ces caractères entre 2 et 6
$ indique la fin de la chaine de caractères.
Voilà j'espère avoir été claire, ce n'est pas facile d'expliquer en condensé tout ça, le mieux à faire c'est que tu lise un cours sur les expressions régulières sur internet (sur developpez il y en a).
darkdog85
Messages postés
13
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
27 novembre 2012
3 déc. 2010 à 08:11
3 déc. 2010 à 08:11
Merci tes précisions m'ont déjà été bien utile.
scriptiz
Messages postés
1424
Date d'inscription
dimanche 21 décembre 2008
Statut
Membre
Dernière intervention
14 septembre 2023
425
3 déc. 2010 à 16:46
3 déc. 2010 à 16:46
Ah j'ai oublié de te dire que le + c'est [1..n] tandis que le * c'est [0..n]
En gros avec le + il faut au minimum 1 fois ce qui précède, tandis qu'avec le * il peut soit y avoir ce qui précède une fois, plusieurs fois, soit zéro fois.
En gros avec le + il faut au minimum 1 fois ce qui précède, tandis qu'avec le * il peut soit y avoir ce qui précède une fois, plusieurs fois, soit zéro fois.
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
3 déc. 2010 à 20:15
3 déc. 2010 à 20:15
Grosso modo,il faut considérer que:
- une expression régulière est une succession de symboles
- elle est obtenue par interprétation d'une chaîne de caractères qui la définit.
Personnellement, je désigne par RE = la chaîne de caractères interprétée, pour bien la distinguer de l'expression régulière = succession de symboles.
- les symboles d'une expression régulière représentent les caractères qui seront acceptées dans les positions successives d'une chaîne matchante
- une position = un emplacement occupé par un caractère dans une chaîne, sans tenir compte de la valeur du caractère en question
- il y a une correspondance stricte UN symbole - UNE position
- là où c'est délicat, c'est qu'UN symbole dans une expression régulière est la plupart du temps défini par PLUSIEURS caractères dans la RE. Il faut donc savoir distinguer dans une RE les groupes de caractères qui représentent chacun un symbole de l'expression régulière.
Ce dernier point ne semble pas poser de problème quand il s'agit de '\d', 's', '\w', etc mais j'ai remarqué que le symbole d'une classe (ou ensemble) de caractères est souvent compris de façon confuse.
Pourtant, [ay34:] définit bien UN SEUL symbole qui exprime quels sont les caractères autorisés qui peuvent être rencontrés à UNE SEULE position.
Les crochets ne sont pas des parenthéses.
Les parenthéses permettent de délimiter plusieurs possibilités entre lesquelles il y a un OU obligatoirement exprimé par '|'
Tandis qu'une classe, qui symbolise aussi plusieurs possibilités, ne concerne toujours qu'une seule position, et donc les possibilités exprimées sont des caractères autorisés solitairement pour une position unique: c'est pour cela qu'il sont écrits les uns à la suite des autres entre les 2 crochets sans avoir à les séparer par le OU '|' . Ce dernier est implicite dans une classe.
Par conséquent, l'écriture [_|.|-]{1} est aberrante.
D'une part elle signifie
"position devant être occupée par '_' ou '|' ou '.' ou '-' ".
Le caractère OU '|' est ainsi défini comme autorisé aussi.
D'autre part,
{1} est aussi superflu puisque le symbole d'une classe n'est destiné qu'à matcher avec une seule position.
De même dans [.]{1} , le {1} est inutile.
Pour spécifier une succession de positions occupées par un des caractères d'une classe, il suffit d'ajouter un quantificateur '+' ou '*', comme à n'importe quel symbole se rapportant à une seule position.
Remarque:
les caractères spéciaux perdent leur spécialité à l'intérieur de crochets, si bien que pour spécifier un point et rien qu'un point, on peut effectivement écrire [.].
Mais cela peut se faire plus simplement aussi en échappant le caractère point: '\.'
- une expression régulière est une succession de symboles
- elle est obtenue par interprétation d'une chaîne de caractères qui la définit.
Personnellement, je désigne par RE = la chaîne de caractères interprétée, pour bien la distinguer de l'expression régulière = succession de symboles.
- les symboles d'une expression régulière représentent les caractères qui seront acceptées dans les positions successives d'une chaîne matchante
- une position = un emplacement occupé par un caractère dans une chaîne, sans tenir compte de la valeur du caractère en question
- il y a une correspondance stricte UN symbole - UNE position
- là où c'est délicat, c'est qu'UN symbole dans une expression régulière est la plupart du temps défini par PLUSIEURS caractères dans la RE. Il faut donc savoir distinguer dans une RE les groupes de caractères qui représentent chacun un symbole de l'expression régulière.
Ce dernier point ne semble pas poser de problème quand il s'agit de '\d', 's', '\w', etc mais j'ai remarqué que le symbole d'une classe (ou ensemble) de caractères est souvent compris de façon confuse.
Pourtant, [ay34:] définit bien UN SEUL symbole qui exprime quels sont les caractères autorisés qui peuvent être rencontrés à UNE SEULE position.
Les crochets ne sont pas des parenthéses.
Les parenthéses permettent de délimiter plusieurs possibilités entre lesquelles il y a un OU obligatoirement exprimé par '|'
Tandis qu'une classe, qui symbolise aussi plusieurs possibilités, ne concerne toujours qu'une seule position, et donc les possibilités exprimées sont des caractères autorisés solitairement pour une position unique: c'est pour cela qu'il sont écrits les uns à la suite des autres entre les 2 crochets sans avoir à les séparer par le OU '|' . Ce dernier est implicite dans une classe.
Par conséquent, l'écriture [_|.|-]{1} est aberrante.
D'une part elle signifie
"position devant être occupée par '_' ou '|' ou '.' ou '-' ".
Le caractère OU '|' est ainsi défini comme autorisé aussi.
D'autre part,
{1} est aussi superflu puisque le symbole d'une classe n'est destiné qu'à matcher avec une seule position.
De même dans [.]{1} , le {1} est inutile.
Pour spécifier une succession de positions occupées par un des caractères d'une classe, il suffit d'ajouter un quantificateur '+' ou '*', comme à n'importe quel symbole se rapportant à une seule position.
Remarque:
les caractères spéciaux perdent leur spécialité à l'intérieur de crochets, si bien que pour spécifier un point et rien qu'un point, on peut effectivement écrire [.].
Mais cela peut se faire plus simplement aussi en échappant le caractère point: '\.'