texte brut J'ai un tas de lignes dans un fichier texte et je veux faire correspondre ce ${ALPANUMERIC characters}
et le remplacer par ${SAME ALPHANUMERIC characters plus _SOMETEXT(CONSTANT)}
.Java regex correspondant
J'ai essayé cette expression ${(.+)}
mais cela n'a pas fonctionné et je ne sais pas comment faire remplacer regex dans java.
vous remercions pour vos commentaires
Voici une partie de mon code:
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
Pattern p = Pattern.compile("\\$\\{.+\\}");
Matcher m = p.matcher(line); // get a matcher object
if(m.find()) {
System.out.println("MATCH: "+m.group());
//TODO
//REPLACE STRING
//THEN APPEND String Builder
}
}
OK ce travaux ci-dessus, mais il fonde que ma variable et non la ligne entière pour ex voici mon entrée:
texte avant ${VARIABLE_NAME}
texte après
texte avant ${VARIABLE_NAME2}
texte après
texte avant une t poste sans variable de texte après
... etc
donc je veux juste remplacer le ${VARIABLE_NAME}
ou ${VARIABLE_NAME}
avec ${VARIABLE_NAME2_SOMETHING}
mais laisser précédant et suivant la ligne de texte tel qu'il est
EDIT:
I bien que je pensais d'une façon comme ceci:
if(line.contains("\\${([a-zA-Z0-9 ]+)}")){
System.out.println(line);
}
if(line.contains("\\$\\{.+\\}")){
System.out.println(line);
}
Mon idée était de capturer la ligne contenant, remplacez alors, mais le regex i s pas ok, il fonctionne bien avec la combinaison pattern/matcher.
EDIT II
Je sens que je me rapproche de la solution ici, voici ce que je suis venu avec jusqu'à présent:
if(line.contains("$")){
System.out.println(line.replaceAll("\\$\\{.+\\}", "$1" +"_SUFFIX"));
}
Ce que je voulais dire par $1
est la chaîne que vous venez de remplacer la remplace par elle-même + _SUFFIX