Javaで正規表現を使って置換

ほとんどAPIドキュメントのままだが…
置換文字列に戻り読み指定の$1とか、$2がそのまま使えるのはありがたいな。

        //置換元文字列
    String source = "Javaで正規表現"
                         + "\nJavaなんかよりもPerlで正規表現"
                         + "\nJavaなんかよりもRubyで正規表現";
        //行頭の"Javaなんかよりも..."を"Javaなんか"で置換
        String regexp = "(^Javaなんか)よりも(?:Perl|Ruby)"; //正規表現
        String replacement = "$1"; //置換文字列:直前にマッチしたグループの1つ目の文字列

        //行に対するマッチ処理を実行するため、Pettern.MULTILINEを設定
        Pattern p = Pattern.compile(regexp, Pattern.MULTILINE);
        Matcher m = p.matcher(source);
        
        //置換結果を収集するためのバッファ
        StringBuffer sb = new StringBuffer();
        while(m.find()) {
      //マッチ直前までの文字列と、置換文字を結合
            m.appendReplacement(sb, replacement);
        }
        m.appendTail(sb);//以降の文字をすべて結合

        System.out.println(sb.toString());
        //結果
        //Javaで正規表現
        //Javaなんかで正規表現
        //Javaなんかで正規表現