在Java代码中搜索一些字符串并替换它

时间:2011-07-13 17:21:56

标签: java regex pattern-matching

在这个其他人编写的java代码中,人们使用null检查条件为null!=abcnull==abc,但我需要将其更改为abc!=null并且分别为abc==null

有人告诉我,这可以很容易地使用正则表达式完成,因为直到现在我正在执行手动任务,但是搜索它然后手动替换它。

2 个答案:

答案 0 :(得分:3)

我不知道布尔表达式右侧的所有要求,但假设它是变量名,\w将是粗略准确搜索(有关变量名称的完整规范,请参阅http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

搜索字符串:

null\s*([!=]=)\s*(\w+)

替换字符串

$1 $2 null

答案 1 :(得分:0)

使用正则表达式无法正确完成。

考虑

/*
Print whether null==abc.
*/
System.out.print("null==abc : " + (null==abc));

如果您只想更改上面的第三个null==abc代码,那么您可以通过使用正则表达式替换来更改代码来对字符串和注释内容进行意外更改。

你要小心不要改变

null==abc.def

abc==null.def

或改变

null==abc(def)

abc==null(def)

如果您对潜在的字符串和注释更改没有问题,并且要检查更改以确保您没有中断任何方法调用,那么您始终可以在perl中执行此操作。

perl -i.bak -pe 's/null(\s*[!=]=\s*)([\w.]+)/$2$1null/g' YourJavaFile.java