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, 8 Juin 2010.

  1. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    361
    J'aime reçus:
    0
    Bonjour, et merci d'essayer de m'aider...

    Mon problème est le suivant, je dois définir une règle pour déterminer si $variable est de la forme

    Code:
    "1. TEXTEALEATOIRE 2. TEXTEALEATOIRE 3. TEXTEALEATOIRE 4. TEXTEALEATOIRE 5. TEXTEALEATOIRE 6. TEXTEALEATOIRE 7. TEXTEALEATOIRE 9. TEXTEALEATOIRE 10. TEXTEALEATOIRE 11. TEXTEALEATOIRE 12. TEXTEALEATOIRE"
    l'application pratique est de déterminier si un fichier PGN (portable notation game) d'une partie d'échecs est de la bonne syntaxe.
    TEXTEALEATOIRE contient les coups de la partie. Sachant que TEXTEALEATOIRE n'est pas susceptible de contenir lui même
    1. 2. 3. ou un autre nombre suivi d'un point.

    Merci de me donner un petit coup de pouce si vous le pouvez...
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Si ce sont des coups d'une partie d'échecs, il n'est probablement pas si aléatoire que ça, si? Et évidemment le nombre de coups peut varier. Tu veux juste valider rapidement, ou tu veux interpréter?

    Plusieurs options:
    /^1\. .*(? 2\. .*(? 3\. .*(? 4\. .*)?)?)?$/ (je te laisse développer sur le nombre de coups max)
    /^(?:(\d+)\. .*? )*$/ et tu vérifies ce que preg_match te renvoie
    utiliser un preg_split avec / (\d+)\. / (mais ça ne vérifie pas que les numéros sont consécutifs)

    Il y en a probablement encore plein d'autres. En tenant compte de la syntaxe complète PGN il doit être possible de valider plus. Note que:
    - la syntaxe PGN semble indiquer qu'il est possible d'avoir plusieurs points après le numéro, je n'ai pas intégré ça ci-dessus
    - je considère qu'il y a exactement le nombre d'espaces qu'il faut où il faut. Tu as probablement intérêt à utiliser \s+ au lieu d'un espace pour être plus "souple"

    Bref, quoi qu'il arrive, à tester sur beaucoup d'exemples réels :)

    Jacques.
     
  3. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    361
    J'aime reçus:
    0
    Merci pour ta réponse, je vais l'étudier, je tiens à te préciser que TEXTEALEATOIRE doit être ignoré, il correspond à un coup qui à la bonne syntaxe de manière sûre, la seule utilité est de vérifier si il y a bien dans cet ordre
    un numéro, un coup blanc, un coup noir, un changement de numéro (le bon numéro 1 2 3 4 dans l'ordre)

    TEXTEALEATOIRE peut seulement contenir R N B Q K , suivi de a b c d e f g h suivi de 1 2 3 4 5 6 7 8 suivi de "x" suivi de a b c d e f g h suivi de 1 2 3 4 5 6 7 8 suivi de espace suivi de R N B Q K , suivi de a b c d e f g h suivi de 1 2 3 4 5 6 7 8 suivi de x suivi de a b c d e f g h suivi de 1 2 3 4 5 6 7 8 suivi de espace.

    mais là n'est pas le problème puisque sa syntaxe est bonne mais pas forcément le nombre qui précède le coup.

    c'est pour vérifier l'ordre que je cherche une règle.

    Car si l'ordre de coup est correct, j'ai obtenu un parser qui fonctionne selon cette règle :

    Code:
    /\s*\[\s*\w+\s*"[^"]*"\s*\]\s*[^\s\[\]]+[\s\S]*\[\s*\w+\s*"[^"]*"\s*\]\s*/m;
    j'étudie actuellement ta solution , cordialement , mike.
     
  4. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 646
    J'aime reçus:
    38
    Bonjour

    Sinon, en mode Posix :

    "^[([ \t]*[0-9]+[ \t]*[\.][^0-9]+)]+[ \t]*$"

    devrait faire l'affaire ?

    0 ou + espace ou tabulation, suivi d'un nombre, suivi de 0 ou + espace ou tabulation, suivi de un point, suivi de un ou plus de caractères ( caractères étant tout sauf un nombre ), le tout répété au moins une fois, et entre début et fin ( ^ et $ )

    Si le nombre est toujours avant le point, ça devrait marcher.

    Moi, je ne connais que Posix, pas les expressions pcre... ;(

    Mais... Cette expression marche aussi en pcre. ;)

    Bien à vous.

    Amicalement.

    Jean-François Ortolo
     
  5. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    361
    J'aime reçus:
    0
    J'ai essayé, cela ne conviens pas tout à fait, mais je vais travailler dans ce sens, merci d'avoir donné une direction à mon travail , car l'enjeu est de taille, j'ai 17000 ouvertures d'échecs en toutes les langues, donc le site va être énorme...et l'expression régulière dois être à sa hauteur... ;) Merci du coup de pouce je vais m'y atteler... cordialement

    Mike.
     
  6. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    361
    J'aime reçus:
    0
    savez vous comment on fait l'opérateur inverse ? comme par exemple
    ne commence pas par [A-E]+[0-9]{2} ?
     
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 11 Juin 2010
Gros problème sur la profondeur de mes pages Problèmes de référencement spécifiques à vos sites 30 Septembre 2022
Problème de htaccess chez Ionos URL Rewriting et .htaccess 12 Septembre 2022
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
Problème de crawl et d'indexation Crawl et indexation Google, sitemaps 1 Septembre 2022
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web 8 Août 2022
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
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