Java Intellij结构搜索和替换所有形式的if语句

Java Intellij结构搜索和替换所有形式的if语句,java,intellij-idea,structural-search,Java,Intellij Idea,Structural Search,我写了这样的搜索: preparedStatement = connect.prepareStatement($sql$); $code1$; $resultSet$ = preparedStatement.executeQuery(); $code2$; if ($resultSet$.next()) { $code3$; } try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {

我写了这样的搜索:

preparedStatement = connect.prepareStatement($sql$);
$code1$;
$resultSet$ = preparedStatement.executeQuery(); 
$code2$;
if ($resultSet$.next()) {
    $code3$;
}
try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {
    $code1$;
    try (ResultSet $resultSet$ = preparedStatement.executeQuery()) {
        $code2$;
        if ($resultSet$.next()) {
            $code3$;
        }
    }
}
PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$);
$code1$;
$resultSet$ = $preparedStatement$.executeQuery(); 
$code2$;
if ($resultSet$.next()) {
    $code3$;
} else $nothing$
和这样的替代品:

preparedStatement = connect.prepareStatement($sql$);
$code1$;
$resultSet$ = preparedStatement.executeQuery(); 
$code2$;
if ($resultSet$.next()) {
    $code3$;
}
try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {
    $code1$;
    try (ResultSet $resultSet$ = preparedStatement.executeQuery()) {
        $code2$;
        if ($resultSet$.next()) {
            $code3$;
        }
    }
}
PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$);
$code1$;
$resultSet$ = $preparedStatement$.executeQuery(); 
$code2$;
if ($resultSet$.next()) {
    $code3$;
} else $nothing$
当我运行这个程序时,它会找到具有
if{foo}else{bar}
结构的代码。我对此很满意,但问题是如果我替换它,它会删除
else{bar}
部分。我希望这个搜索/替换能够明智地处理带有else、多个else-if或它们的任意组合的if语句。有没有一种方法可以通过一次搜索和替换来实现这一点


我尝试将搜索中的
if
更改为有一个else并修复了问题,但它跳过了只有if而没有else的代码。

目前无法使用单个结构搜索和替换来完成此操作。不过,你可以用两个。您已经有了查找
if
s和
else
工作的模式。要查找没有
else
分支的
if
s,可以使用如下模式:

preparedStatement = connect.prepareStatement($sql$);
$code1$;
$resultSet$ = preparedStatement.executeQuery(); 
$code2$;
if ($resultSet$.next()) {
    $code3$;
}
try (PreparedStatement preparedStatement = connect.prepareStatement($sql$)) {
    $code1$;
    try (ResultSet $resultSet$ = preparedStatement.executeQuery()) {
        $code2$;
        if ($resultSet$.next()) {
            $code3$;
        }
    }
}
PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$);
$code1$;
$resultSet$ = $preparedStatement$.executeQuery(); 
$code2$;
if ($resultSet$.next()) {
    $code3$;
} else $nothing$
其中
$nothing$
变量上的约束(在编辑变量按钮下)为:
最小/最大出现次数:
0,0

并使用替换模式省略
else
分支:

try (PreparedStatement $preparedStatement$ = $connect$.prepareStatement($sql$)) {
    $code1$;
    try (ResultSet $resultSet$ = $preparedStatement$.executeQuery()) {
        $code2$;
        if ($resultSet$.next()) {
            $code3$;
        }
    }
}

这看起来像个虫子。您可能希望在以下位置提交错误报告: