сильный текст У меня есть несколько строк в текстовом файле, и я хочу сопоставить это ${ALPANUMERIC characters}
и заменить его на ${SAME ALPHANUMERIC characters plus _SOMETEXT(CONSTANT)}
.
Я попробовал это выражение ${(.+)}
, но оно не сработало, и я также не знаю, как сделать регулярное выражение замены в Java.
спасибо за ваш отзыв
Вот мой код:
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
}
}
ОК, это выше работает, но оно только находит мою переменную, а не всю строку для ex здесь мой ввод:
текст до ${VARIABLE_NAME}
текст после
какой-то текст до ${VARIABLE_NAME2}
какой-то текст после
часть текста перед текстом без переменной часть текста после
... и т. д.
, поэтому я просто хочу заменить ${VARIABLE_NAME}
или ${VARIABLE_NAME}
на ${VARIABLE_NAME2_SOMETHING}
, но оставить предыдущую и следующую текстовую строку такой, как
EDIT:
Я думал, что так:
if(line.contains("\\${([a-zA-Z0-9 ]+)}")){
System.out.println(line);
}
if(line.contains("\\$\\{.+\\}")){
System.out.println(line);
}
Моя идея состояла в том, чтобы захватить строку, содержащую это, затем заменить, но регулярное выражение не в порядке, хотя оно работает с комбинацией шаблон / совпадение.
РЕДАКТИРОВАТЬ II
Мне кажется, что я здесь ближе к решению, вот что я придумала до сих пор:
if(line.contains("$")){
System.out.println(line.replaceAll("\\$\\{.+\\}", "$1" +"_SUFFIX"));
}
Что я имел в виду $1
- это строка, которую вы только что нашли, замените ее на себя + _SUFFIX