IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] inclure des caractères et exclure d'autres


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut [Tableaux] inclure des caractères et exclure d'autres
    Bonjour,

    Voilà mon problème :

    j'ai une sélection de lettres : abca ( l'expression peut contenir 0 ou 1 caractère)
    j'ai une sélection de lettres qui sont à exclure : defghijklmnopqrstuvwxyz

    J'essaie d'avoir une expression régulière qui permettent de vérifier si des mots valides ces critères

    Ex : a ok
    ca ok
    aa ok
    aaa non
    ae non

    Mon expression régulière actuelle ressemble à cela :
    [A?B?C?A?][^BDFGHIJKLMNOPQRSTUVWXYZ]
    Mais je n'arrive pas à faire en sorte que les 2 conditions soit simultannées

    Pouvez-vous m'aider ?
    Merci,
    Mickaël

  2. #2
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    Tu veux que je te dise ? Ce que tu veux est un carnage en regex ^^ Il va falloir tester tous les cas 1 à 1 ^^

    Donc :
    a
    b
    c
    aa
    ab
    ac
    ba
    bc
    ca
    cb
    aab
    aac
    aba
    abc
    aca
    acb
    ...

    Si tu veux, j'ai fait une fonction qui te retourne un tableau des possibilités :
    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
    function regex_all_possibilities($array_of_characters, $start='')
    {
    	$return_array = array();
     
    	if( count($array_of_characters) > 0 )
    	{
    		foreach($array_of_characters as $key=>$value)
    		{
    			$return_array[] = $start . $value;
     
    			$other_possibilities = $array_of_characters;
    			array_splice($other_possibilities, $key, 1);
     
    			$return_array[] = regex_all_possibilities($other_possibilities, $start . $value);
    		}
    	}
     
    	return $return_array;
    }
     
    var_dump(regex_all_possibilities(array('a', 'b', 'c')));

  3. #3
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut
    En fait il y a une solution on m'a donné ca sur un autre forum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(([PLANEUR])(?!\2))+\r$
    Bon c'est pas encore parfait

    Par exemple : REPARUE est validé par la regex alors qu'il n'y a qu'un E !
    Par contre REPARUEE n'est pas validé ce qui est correct.

    Je pige pas trop pourquoi REPARUE est validé

  4. #4
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    mouarf ta regex fonctionne ?
    Je vais m'y interesser plus en détails alors...
    Apres quelques tests, je peux voir qu'elle ne fonctionne pas ^^
    Elle ne se base (et ne peux se baser) que sur le dernier caractère capturé et pas sur la chaine entiere qui précède.

    Test en mettant EE dans ta regex et met EE comme mot tu verras qu'il te le refusera. Il verifie juste que les lettres font partis du mot que tu demande ET que la lettre qui précède n'est pas la meme qu'on capture.

  5. #5
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(([CALEA]) (?!\2\2))+$
    Oui effectivement, cela autorise que chacune des lettres puissent être en double... alors que seul le A peut en double

  6. #6
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut
    Alors j'ai eu d'autres modèle de regex, mais à chaque fois certains cas ne passaient pas

    Finalement, je récupère tous les mots, et je teste directement en C# , c'est prends que une ou deux secondes....

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Affichage des caractères accentués
    Par kate59 dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2008, 20h34
  2. [Tableaux] Affichage des caractères spéciaux
    Par crischprolch dans le forum Langage
    Réponses: 2
    Dernier message: 27/06/2007, 10h12
  3. [Tableaux] Supprimer des caractères dans une chaine
    Par ddubois dans le forum Langage
    Réponses: 10
    Dernier message: 16/12/2006, 13h53
  4. [Tableaux] Remplacer des caractères
    Par kevinf dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2006, 09h13
  5. Réponses: 21
    Dernier message: 05/02/2006, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo