java正则表达式查找和替换多个

时间:2016-06-07 16:12:19

标签: java regex search replace

我正在尝试在我的代码库中使用正则表达式替换以下代码。

if(StringFunctions.isNullOrEmpty(employee.getName())){

//java code
}

新代码应为:

If(StringUtils.isEmpty(StringUtils.trim(employee.getName()))){

//java code
}

我已编写以下代码来执行更新。

String regEx = "StringFunctions.isNullOrEmpty(.*)";
String replacement = "StringUtils.isEmpty(StringUtils.trim$1)";
textFromFile.replaceAll(regEx,pattern);

输出是:

If(StringUtils.isEmpty(StringUtils.trim(employee.getName())){)

//java code
}

我的代码有什么问题???请帮帮我

1 个答案:

答案 0 :(得分:1)

在正则表达式()中是捕获组。您的正则表达式模式不正确,因为您打算放置文字括号,而只是放置一个捕获组。

正确的正则表达式模式是:

"StringFunctions.isNullOrEmpty\\((.+)\\)"

\\((.+)\\)表示匹配一个文字的开括号,后跟(并捕获)任意一个或多个字符,后跟一个文字右括号。

测试:

String textFromFile = "if(StringFunctions.isNullOrEmpty(employee.getName())){}";
String regEx = "StringFunctions.isNullOrEmpty\\((.+)\\)";
String replacement = "StringUtils.isEmpty(StringUtils.trim($1))";
String output = textFromFile.replaceAll(regEx,replacement);
System.out.println(output);

输入:

if(StringFunctions.isNullOrEmpty(employee.getName())){}

输出:

if(StringUtils.isEmpty(StringUtils.trim(employee.getName()))){}