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

C# Discussion :

Aide pattern regex


Sujet :

C#

  1. #1
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut Aide pattern regex
    Bonjour,

    J'aurais besoin d'aide pour trouver un pattern d'expression régulière.

    Voici un exemple de texte en entrée:
    Code shader : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    animMap 10 textures/dir/img1.tga 
    textures/dir/img2.tga 
    textures/dir/img3.tga 
    textures/dir/img4.tga 
    textures/dir/img5.tga 
    textures/dir/img6.tga 
    textures/dir/img7.tga 
    textures/dir/img8.tga
    J'aimerais trouver toutes les textures présentes sous la forme "textures/dir/img1.tga".

    Petites notes:
    - il peut y avoir entre 2 et 8 textures
    - il y a un nombre exhaustif d'extension possible (tga, jpg, ..) et la casse est ignorée ("tga", "TGA", "Tga", etc.)

    Pour l'instant j'ai ceci:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                string pattern_animmap = @"(?i)animmap(?-i)[\s]+[\S]+";    //<- "animMap 10"
                for (int i = 0; i < 8; i++)
                    pattern_animmap += @"[\s]+([\S]+)";    //<- espacement + texture
    Mais comme vous pouvez le voir je recherche 8 textures car je ne sais pas comment intégrer le fait qu'une texture peut avoir telle ou telle extension. Mvoyez ?

    J'espère avoir exposé mon problème assez clairement..

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    Vite comme ça je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textures\/dir\/(?<texture>[a-z]+\d+\.[a-z]{3,4})
    Et tout les noms sont dans le groupe "texture" du match.

  3. #3
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Salut PatteDePoule,

    Je recherche "textures/dir/img1.tga" et pas seulement "img1.tga", sachant que ça pourrait être aussi "models/mapobjects/picture.jpg".

    Quoiqu’ il en soit ta réponse m'a permis de trouver quelque chose qui me parait correspondre:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                List<string> textures = new List<string>();
                string pattern = @"(?i)animmap(?-i)[\s]+[\S]+([\s]+(?<texture>[\S]+\.[a-zA-Z]{3,4})){2,8}";
     
                foreach (Match m_test in new Regex(pattern).Matches(text))
                    foreach (Capture cap in m_test.Groups["texture"].Captures)
                        textures.Add(cap.Value);
    Tu peux voir que je me suis grandement inspiré de ce que tu as fait.

    Merci pour ton aide

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

Discussions similaires

  1. [Pattern][Regex] vérifier que mon email est valide
    Par anitshka dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 23/05/2011, 13h03
  2. [java.util.regex.Pattern] Regex : contrôler le nombre d'accolades
    Par jmini dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 01/12/2009, 10h33
  3. pattern Regex ?
    Par MASSAKA dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 19/10/2009, 09h27
  4. Aide pour Regex sur URL un peu spécial
    Par poppyto dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2008, 13h21
  5. Aide sur Regex
    Par Caponord38 dans le forum Langage
    Réponses: 2
    Dernier message: 29/02/2008, 20h49

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