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 :
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 \AC-\d{6}-S-\d{4}_\w+_\d+\z //C'est c'est mon exemple
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part var pattern = @"\AC-\d{6}-S-\d{4}_\w+_\d+\z"
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 :
La 2nd
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(); }
et le main prgm :
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; }
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![]()
Partager