Problème pour définir une expression régulière.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par michel.leonard, 11 Juin 2010.

  1. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    361
    J'aime reçus:
    0
    Bonjour, je suis confronté à un léger problème , je vais vous l'expliquer dans son contexte, de façon à faire un sujet qui correspond à un exemple concret.
    Soit : une liste contenant des dizaines de milliers de parties d'échecs dans le format PGN , un format très classique dans le domaine. (PGN signifie portable notation game (voir wikipedia pour les curieux)).
    rappel : les coups de la partie, au format PGN , se présentent toujours de la façon suivante:

    1.[espace][LE COUP DES BLANCS][espace][LE COUP DES NOIRS][espace]2.[LE COUP DES BLANCS][espace][LE COUP DES NOIRS][espace]3. etc jusqu'à la fin de la partie...
    Donc littéralement : c'est toujours un nombre, suivi d'un point, suivi d'un espace, suivi du coup des blancs, suivi d'un espace, suivi du coup des noirs, suivi d'un espace, suivi du nombre suivant...etc

    Et je cherche à définir une règle permettant de trouver toutes les entrées de ma base de données MySQL ne comportant qu'un nombre défini de coup.

    Pour un coup : j'aimerai qu'elle retourne toutes les chaines se finissant par 2. (sans le 2.)
    Pour deux coups : Toutes les chaines se finissant par 3.(sans le 3.)

    Mais je n'y arrive pas, je parcours le site du zéro en boucle pour apprendre et réapprendre tout ce qu'il à a partager sur les expressions régulières, mais en vain... j'arrive à définir un coup, mais pas 2 coups, 3 coups, n coups...

    Merci de me mettre sur une piste, si vous le pouvez, cordialement
    Mike.
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Par exemple:

    /^ 2\. [^ ]+( [^ ]+)?$/

    Note que ça se base sur le format que tu donnes (i.e. un coup blanc, un coup noir, sans commentaires et autres constructions PGN). J'ai quand même prévu le cas où les blancs gagnent (il qu'il n'y a donc pas de coup final des noirs).

    Perso, je serais à ta place, je découperais toutes les parties et je ferais une ligne par coup en base, c'est plus facile à manipuler ensuite.

    Jacques.
     
  3. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    361
    J'aime reçus:
    0
    un ami m'a proposé la solution suivante, carrément dans la requête SQL :

    Code:
    $notmove = 2; // 3 4 5 , comme on veut...
    
    
    SELECT *
    FROM `liste_pgn`
    WHERE `PGN` NOT LIKE \"%$notmove%.\"
    donc je pense que cela m'épargne l'expression régulière, je vais essayer cette solution et vous tenir au courant, merci Jacques de prendre la peine d'étudier mon problème, cordialement. Mike.
     
  4. Dr DLP
    Dr DLP WRInaute impliqué
    Inscrit:
    29 Juin 2003
    Messages:
    525
    J'aime reçus:
    0
    Ca va buguer quand tu auras un 2 dans la liste des coups, Fe2 par exemple. Ca fonctionnera mieux en rajoutant le point comme dans l'exemple de jcaron.

    Tu peux utiliser les regex dans ta requête sinon: http://dev.mysql.com/doc/refman/5.0/fr/regexp.html

    Ceci dit si tu fais des stats sur les ouvertures il sera beaucoup beaucoup plus rapide de passer par le PHP et stocker les résultats que de passer mySqL pour chaque page.

    Je procéderais comme suit:
    1) Récupération de toutes les parties depuis la bdd

    2) Boucle sur les résultats

    3) Mise en tableau de la forme:
    $my_array[$numero_demi_coup]['ouverture'] = la chaine de déplacement (e4c5Cf3Cc6d4 par exemple)
    $my_array[$numero_demi_coup]['ouverture']['compte'] = une donnée à increment représentant le nombre de fois où $my_array[$numero_demi_coup]['ouverture'] est trouvé.

    4) Insertion dans une autre table:
    Open_id => ID de l'enregistrement
    Open_string => $my_array[$numero_demi_coup]['ouverture']
    Open_num => $my_array[$numero_demi_coup]['ouverture']['compte']

    5) Traitement des résultats:
    Tu cherches les stats de toutes les Siciliennes par exemple:
    $sql = "SELECT Open_num FROM matable WHERE Open_string = 'e4c5'";
     
  5. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    361
    J'aime reçus:
    0
    oublie pas qu'il y à un point %nombte%. <--- ici ! car Fe2 il n'y à pas de point derrière :)
     
Chargement...
Similar Threads - Problème définir expression Forum Date
Problème pour définir une expression régulière. Développement d'un site Web ou d'une appli mobile 8 Juin 2010
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022
Problème de vitesse d'affichage des pages sur Analytics Google Analytics 26 Avril 2022
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Problème avec GA4 : nb de visiteurs temps réel et par jour Google Analytics 19 Avril 2022
Problème indexation pages précises en React.js Débuter en référencement 19 Avril 2022
Problème de référencement Demandes d'avis et de conseils sur vos sites 8 Avril 2022
Problème adsence : Annonces ne s'affichent plus AdSense 10 Mars 2022
problèmes procédures stockées Administration d'un site Web 9 Mars 2022
Problème récupération fichier vps Développement d'un site Web ou d'une appli mobile 5 Mars 2022
Problème config postfix. Administration d'un site Web 5 Mars 2022
Search Console Problème d'indexation Crawl et indexation Google, sitemaps 24 Février 2022
Problème d'url canonique Problèmes de référencement spécifiques à vos sites 22 Février 2022
Problème indexation car élément "url" manquant sur logo Crawl et indexation Google, sitemaps 11 Février 2022
Problème avec un menu en ajax via jquery Problèmes de référencement spécifiques à vos sites 6 Février 2022
Problème url rewriting et redirection URL Rewriting et .htaccess 4 Février 2022
Search Console Problème indexation sitemap Problèmes de référencement spécifiques à vos sites 1 Février 2022
Problème de prise de mots clés Référencement Google 30 Janvier 2022