我正在尝试在我的代码库中使用正则表达式替换以下代码。
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
}
我的代码有什么问题???请帮帮我
答案 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()))){}