Bonjour,
Voilà, je suis en train de coder une classe qui permet de remplacer dans un fichiers des variables par leur valeur disponible dans mon programme.
J'offre la possibilité de choisir les délimiteurs de début et de fin des variables dans le fichier. Par exemple, je veux ma variable soit encadrée par "${" et "}", et avoir un fichier du genre :
Donc, dans ma classe, dans un premier temps, j'ai utilisé le pattern "\\$\\{.*\\}". Le problème est que si j'ai deux variables sur la même ligne dans mon fichier, je ne capture qu'un seul élément. Il faut donc que j'exclue à l'intérieur de mes délimiteur la chaîne de fermeture.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <x>${maVariable}</x>
Dans mon exemple, c'est facile, mon pattern devient "\\$\\{[^}]*\\}". Mais comme je veux laisser le choix pour les délimiteurs, que faire si le délimiteur de fin comporte plusieurs caractères ?
Après quelques recherches, il ne semble pas possible d'exclure une chaîne dans une regex. La solution est de faire des combinaisons un peu siouxes. Genre, si les délimiteurs sont "/-" et "-/", la regexp pourrait être (à la louche) :
Mais est-ce que c'est vraiment réalisable pour tout type de délimiteurs ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part /-([^-].*|-[^/].*)-/
Est-ce que une lib quelconque existe déjà et fait tout ça ?
Est-ce que je ne devrait pas m'embêter et restreindre le délimiteur de fin à un caractère ?
Merci
Partager