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 :

Récupération Pattern Regex


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Par défaut Récupération Pattern Regex
    Bonjour à tous voici mon problème .

    J'ai un doc xml représentant en quelque sorte ma base de données.
    Dans celle ci j'ai le balisage permettant à l'utilisateur de rentrer un pattern pour un regex .
    le problème c'est que le format d'un pattern regex est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \AC-\d{6}-S-\d{4}_\w+_\d+\z //C'est c'est mon exemple
    Or les "\" ne sont pas accepté par le langages C# et lorsqu'on veut qu'il soit accepté en brut cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var pattern = @"\AC-\d{6}-S-\d{4}_\w+_\d+\z"
    Or ( Le fond de mon problème) en récupérant le pattern via le XML si j'ajoute le "@" + le retour de ma fonction cela ne marche pas et je n'ai pas d'idée pour contrer cela



    Voici la base :
    Code XML : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version = "1.0" encoding="ISO8859-1" standalone="yes" ?>
     
    <Root>
    	<Origin>F:\SHARED</Origin>
    	<Destination>F:\SHARED_PRIVATE</Destination>
    	<Error>F:\SHARED</Error>
    	<LogPath>F:\SHARED_PRIVATE</LogPath>
     
    	<RegexPattern>\AC-\d{6}-S-\d{4}_\w+_\d+\z</RegexPattern> // Ici le pattern
     
     
    	<PathArchiver>F:\ARCHIVER</PathArchiver>
      	<Machines>	
        		<Machine>
    			<Name>FLUO</Name>
    			  <FLUO>
    				<AnalysisId>FXALU00_C</AnalysisId>
            			<Type_accepted>
    	  				<NameType>.txt</NameType>
            			</Type_accepted>
    			  </FLUO>
        		</Machine>
        		<Machine>
    			<Name>ICP</Name>
    			  <ICP>
    				<AnalysisId>ICPXAL_00C</AnalysisId>
            			<Type_accepted>
    	  				<NameType>.xlsx</NameType>
            			</Type_accepted>
    			  </ICP>
        		</Machine>  
      	</Machines>
    </Root>

    Dans mon code c# voici ma structures :

    -> Une méthode pour fouiller dans le XML
    -> Une méthode qui restructure le résultat
    -> Le main programme qui va appeler la 2nd méthode



    Voici la 1ere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    static IEnumerable<string> Regex()
                 {
                    var xmlDocument = new XmlDocument();
     
                    xmlDocument.Load("./Base.xml");
     
                    var xmlNodeName = xmlDocument.SelectNodes("/Root");
     
                    return (from XmlNode xmlNode2 in xmlNodeName select xmlNode2["RegexPattern"]?.InnerText).ToList();
                 }
    La 2nd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    static string RegexPattern()
                {
                    var patternRegex = "";
     
                    foreach (var pattern in Regex())
                    {
                        patternRegex = pattern;
                    }
     
                    Console.WriteLine(patternRegex);
     
                    return patternRegex;
                }
    et le main prgm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var rgx = new Regex("@"+RegexPattern()); // Ne fonctionne pas
     
                 if (rgx.Match(test).Success)
                 {
                     Console.WriteLine("SUCCESS PATTERN FOR  " + rgx.Match(test).Value);
                 }
                 else
                 {
                     Console.WriteLine("ERROR PATTERN");
                 }


    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut
    Bonjour,

    Le pb se situe sur cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rgx = new Regex("@"+RegexPattern());
    En effet, les lignes de code ci dessous sont différentes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string chaine = @"test"
    string chaine ="@test"
    Dans ton cas il faudrait juste écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rgx = new Regex(RegexPattern());

  3. #3
    Membre confirmé
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Par défaut
    Autant pour moi . J'ai trouvé l'erreur.

    C'était très bête je me suis juste trompé sur le nom du string de test ...


    Le topic restera utile pour les regex et pour l'erreur des "@" si jamais elle n'est pas volontaire merci beaucoup

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

Discussions similaires

  1. Récupération de Regex
    Par Phoenix07 dans le forum C#
    Réponses: 2
    Dernier message: 06/03/2013, 14h17
  2. [Validator] @Pattern regex conditionnée
    Par scandinave dans le forum Hibernate
    Réponses: 5
    Dernier message: 01/10/2012, 10h39
  3. [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
  4. [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
  5. pattern Regex ?
    Par MASSAKA dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 19/10/2009, 09h27

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