ソースコードに直書きされたSQL文を取り出す

例えば、下のようなコードから、Vimエディタで、実際に実行されるSQL文を抜き出す。

public String sql =
    "SELECT " +
    "USER.USER_ID, USER.FAMILY_NAME, USER.GIVEN_NAME, USER.FAMILY_NAME_KANA, " +
    "USER.GIVEN_NAME_KANA, USER.PHONE, USER.CELL_PHONE, USER.EMAIL, " +
    "USER.MOBILE_MAIL, USER.NORMALIZED_FAMILY_NAME_KANA, USER.NORMALIZED_GIVEN_NAME_KANA, " +
    "USER.ENABLED, MEMBER.MEMBER_ID, MEMBER.LOGIN_NAME, MEMBER.LOGIN_PASSWORD, " +
    "MEMBER.ENABLED, MEMBER.SORT_ORDER, GROUP.GROUP_NAME, GROUP.SORT_ORDER, " +
    "GROUP.ENABLED " +
    "FROM " +
    "NNS_USER USER " +
    "INNER JOIN NNS_MEMBER MEMBER ON USER.USER_ID = MEMBER.USER_ID " +
    "INNER JOIN NNS_GROUP_MEMBER GM ON MEMBER.MEMBER_ID = GM.MEMBER_ID " +
    "INNER JOIN NNS_GROUP GROUP ON GM.GROUP_ID = GROUP.GROUP_ID " +
    "WHERE " +
    "USER.ENABLED = 'T' AND MEMBER.ENABLED = 'T' AND GROUP.ENABLED = 'T' " +
    "ORDER BY " +
    "GROUP.SORT_ORDER ASC, MEMBER.SORT_ORDER ASC";
statement = connection.createStatement();
statement.executeQuery(sql);

上のコードを見て、こんなコード書かないよ、とか思うかもしれないが、
現実、よく見るので仕方ない。
地味に面倒くさくて、しかし、良く遭遇する。
それでも、他のテキストエディタよりかは、Vimでやった方が楽なはずだけど。


いろいろな方法を試したあげく、結局、
コード量が多くても、少なくても、共に、範囲指定の正規表現で処理するのが一番楽だろう、
という、面白くもなんともない結論に落ち着いた。