Création
d'entreprise
Posez votre question Signaler

RegExp : comment interdire une chaine [Résolu]

TheLamia 76Messages postés 11 février 2007Date d'inscription 18 août 2010Dernière intervention - Dernière réponse le 28 juil. 2009 à 11:41
Bonjour à vous !
Après de longues recherches, j'en viens à interroger la grande communauté de CommentCaMarche...
Je pensais m'y connaitre pas mal en expressions régulières, mais il y a une notion qui m'échappe, et pas moyen de trouver une réponse simple...
Je voudrais tout simplement interdire une chaine de caractère grace à l'utilisation d'une expression régulière. Je sais qu'on peut interdire des caractères ainsi : [^abc] (a, b, c interdits), mais pour une chaine complète?!
Par exemple, si je veux interdire la chaine "salut", vous feriez quoi ?
Merci à tous d'avance.
Lire la suite 

RegExp : comment interdire une chaine »

5 réponses
Réponse
+3
moins plus
Re,

Oui dans les regex directement (source http://www.ilu.be/wiki/Les_motifs_des_REGEX )

(?=modèle)
Le test avant positif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible. Par exemple:
chat(?= perché| botté) reconnait chat seulement s'il est immédiatement suivi de perché ou botté.
\w(?!\.) reconnait un mot sauf s'il est suivit d'un point.


(?!modèle)
Le test avant négatif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible. Par exemple:
chat(?! perché| botté) reconnait chat seulement s'il n'est pas immédiatement suivi de perché ou botté.

(?<=modèle)
Le test arrière positif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible.
Exemple: (?<=\d)\d reconnait un chiffre que si il est immédiatement précedé d'un autre chiffre.


(?<!modèle)
Le test arrière négatif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible.
Exemple: (?<!\.)\w reconnait un mot seulement s'il n'est pas immédiatement précédé d'un point.


Regarde aussi (avec des exemples php)

Les tests avants positifs: (?=expression)
Les test avants négatifs: (?!expression)
Les tests arrières positifs: (?<=expression)
Les tests arrières négatifs: (?<!expression

Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Tu utilises les regex avec quoi?
En php, perl tu as les tests avant/arrière qui te permet d'exclure un partie de chaîne.
Ajouter un commentaire
Réponse
+0
moins plus
J'utilise php.
Je veux bien en savoir plus sur ces "tests avant/arrière". Il faut utiliser des fonctions pour cela ?
Et en pure RegExp c'est pas faisable ?
Ajouter un commentaire
Réponse
+0
moins plus
merci !
je vais pouvoir m'en sortir avec cela.
à noter quand même qu'il n'y a pas d'outil simple pour réaliser cette opération, dommage...
néanmoins, merci de la réponse !
hopla, résolu...
Ajouter un commentaire
Réponse
+0
moins plus
Re,

à noter quand même qu'il n'y a pas d'outil simple pour réaliser cette opération

Ben, justement, l'outil est là mais il faut comprendre le fonctionnement, c'est tout.
Il n'y a pas plus simple que (?=), (?<=) etc.
De toute façon le but d'une regex c'est de faire correspondre un motif, et pas de ne pas faire correspondre un motif.
Tu vois ce que je veux dire?
Ajouter un commentaire
Ce document intitulé « RegExp : comment interdire une chaine » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?