2016-06-07 3 views
-1

Я пытаюсь заменить следующий код с помощью regex в моей базе кода.java регулярное выражение найти и заменить несколько

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

есть пара опечаток в вашем вопросе, ожидаемый результат начинается с "если" не «Если », а в replaceAll это не шаблон, а замена –

+0

, это не может работать на самом деле, поскольку вы не представляете, сколько скобок у вас будет внутри StringFunctions.isNullOrEmpty() –

ответ

1

В regex () - группа захвата. Ваш шаблон регулярных выражений неверен, потому что, когда вы хотели разместить литеральные скобки, вместо этого вы отправляете только группу захвата.

Правильный шаблон регулярного выражения:

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

\\((.+)\\) означает соответствие буквального открытого кронштейна с последующим (и захватом) 1 или более любых символов, за которым следует буквальной закрывающей скобка.

Тестирование:

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()))){} 
+0

Это не соответствует приведенному ниже коду. – venkat

+0

if (! StringFunctions.isNullOrEmpty (employee.getName) &&! StringFunctions.isNullOrEmpty (employee.getEmailId)) – venkat

+0

@venkat Если вам требуется более сложное решение, вам, вероятно, потребуется реализовать его, используя что-то другое, кроме Regex. – explv