Как заменить конкретную подстроку с помощью регулярного выражения с использованием Java - PullRequest
0 голосов
/ 25 августа 2011

У меня есть строка, как показано ниже

   when 
   $Event:com.abc.Event(description == "abc")
   then
   logger.info("description"); 

Мне нужно заменить вышеуказанную строку на ниже

   when
   $Event:com.abc.Event(description == "abc") from entry-point "EventStream"
   then
   logger.info("description"); 

Точно так же, когда я встречаю

when
$Alarm:com.abc.Alarm(description == "abc")
then
logger.info("alarm description");

Мне нужно изменить, как показано ниже

when
$Alarm:com.abc.Alarm(description == "abc") from entry-point "AlarmStream"
then
logger.info("alarm description");

Я хотел бы заменить строку, используя регулярное выражение, используя жадное совпадение. Пожалуйста, дайте мне несколько советов, чтобы достичь того же.

Ответы [ 2 ]

1 голос
/ 25 августа 2011

Простое решение, не беспокойтесь о регулярном выражении, используйте вместо него метод Strings.Создайте объект Scanner, который анализирует строковую строку для строки и добавляет результат в строковый буфер.

if(line.contains("$Event:com.abc.Event(description == "abc")"){
  sb.append(line + "from entry-point \"EventStream\" ");
} else if(line.contains("$Alarm:com.abc.Alarm(description == \"abc\")") {
 sb.append(line + "from entry-point \"AlarmStream\" ");
}else {
 sb.append(line);
}
0 голосов
/ 25 августа 2011

Новый ответ, который будет использовать регулярное выражение и тестовый класс.

import java.util.Scanner;


public class RegEx {

public static void main(String[] args) {
    String text = "when\n$Alarm:com.abc.Alarm(description == \"abc\")\nthen\nlogger.info(\"alarm description\")";
    System.out.println(text);
    StringBuilder sb = new StringBuilder();
    Scanner scan = new Scanner(text);
    while(scan.hasNextLine()){
        String line = scan.nextLine();
        if(line.matches(".*\\.Alarm(.*).*")){
            line+=" from entry-point \"AlarmStream\"";
        }
        sb.append(line+System.getProperty("line.separator"));
    }
    System.out.println(); // Nicer output
    System.out.println(sb.toString());
}

}

Выход

когда

$ Alarm: com.abc.Alarm (описание == "abc")

тогда

logger.info («описание тревоги»)

когда

$ Alarm: com.abc.Alarm (description == "abc") от точки входа "AlarmStream"

1021 * тогда *

logger.info («описание тревоги»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...