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:
\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:
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:
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:
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:
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:
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 :)