我有如下所示的字符串
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");我想用贪婪匹配的正则表达式替换字符串。请给我一些指点,以达到同样的效果。
发布于 2011-08-25 21:36:56
简单的解决方案不用担心正则表达式,而是使用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);
}发布于 2011-08-25 22:05:02
将使用正则表达式和测试类的新答案。
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());
}}
输出
when
$Alarm:com.abc.Alarm(description == "abc")
然后
Logger.info(“告警描述”)
什么时候
来自入口点"AlarmStream“的$Alarm:com.abc.Alarm(description ==”abc“)
然后
Logger.info(“告警描述”)
https://stackoverflow.com/questions/7191219
复制相似问题