#java #regex #replace #inverse
#java #регулярное выражение #заменить #обратное
Вопрос:
Я использую регулярное выражение Java. У меня есть следующая строка
String s = "the location is at {emp.address.street} with the name {emp.name},{emp.surname}";
Для приведенной выше строки s.replaceAll( "\{(.*?)\}", "" )
возвращает следующую строку:
the location is at with the name ,
Теперь я хочу обратить это, чтобы получить следующий результат:
{emp.address.street}{emp.name}{emp.surname}
Ответ №1:
Этот протестированный скрипт работает для меня:
public class TEST
{
public static void main( String[] args )
{
String s = "the location is at {emp.address.street} with the name {emp.name},{emp.surname}";
String result = s.replaceAll( "[^{}] |(\{(.*?)\})", "$1" );
System.out.println(result);
}
}
Комментарии:
1. Это здорово … не могли бы вы объяснить, как это работает? какова роль $ 1?
Ответ №2:
Вы можете создать Pattern
и использовать Matcher.find()
и Matcher.group()
для получения частей этого шаблона. Вот Javadocs для классов: Сопоставитель javadoc Шаблон javadoc