首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中使用正则表达式替换特定子字符串

如何在java中使用正则表达式替换特定子字符串
EN

Stack Overflow用户
提问于 2011-08-25 21:29:09
回答 2查看 150关注 0票数 0

我有如下所示的字符串

代码语言:javascript
复制
   when 
   $Event:com.abc.Event(description == "abc")
   then
   logger.info("description"); 

我需要用下面的字符串替换上面的字符串

代码语言:javascript
复制
   when
   $Event:com.abc.Event(description == "abc") from entry-point "EventStream"
   then
   logger.info("description"); 

同样的方式当我遇到

代码语言:javascript
复制
when
$Alarm:com.abc.Alarm(description == "abc")
then
logger.info("alarm description");

我需要更改如下

代码语言:javascript
复制
when
$Alarm:com.abc.Alarm(description == "abc") from entry-point "AlarmStream"
then
logger.info("alarm description");

我想用贪婪匹配的正则表达式替换字符串。请给我一些指点,以达到同样的效果。

EN

回答 2

Stack Overflow用户

发布于 2011-08-25 21:36:56

简单的解决方案不用担心正则表达式,而是使用Strings方法包含。创建一个Scanner对象,逐行解析字符串行,并将结果添加到字符串缓冲区。

代码语言:javascript
复制
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);
}
票数 1
EN

Stack Overflow用户

发布于 2011-08-25 22:05:02

将使用正则表达式和测试类的新答案。

代码语言:javascript
复制
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(“告警描述”)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7191219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档