RegExp

JavaScript

JavaScript

O'ReillyのJavaScript本に付いているCDをPCにコピってGoogleデスクトップ検索が堪らん。Ctrl*2でクイック検索ボックス出して「javascript メソッド名」とかで検索する事でリファレンスを簡単に参照出来る。
んで、ちょっとRegExpについて調べたら、プロパティにleftContextrightContextがあるみたい。それぞれ、最近マッチした文字列の前と後の文字列を取得できる。
注意したいのは、RegExpオブジェクトの変数にはこのプロパティが無く、RegExp自体にしか無い事。Firefoxでしか調べてなくて他のブラウザではどうか知らないけど。

var str = "aaaHOGEbbbHOGEccc";
var reg = /HOGE/g;
var res;
while( (res = reg.exec(str)) != null ) {
    var message = "";
    for ( var index in res ) {
        message += [ index, ": ", res[index], "\n"].join("");
    }
    message += [ "leftContext: ", RegExp.leftContext, "\n",
                 "rightContext: ", RegExp.rightContext, "\n"
               ].join("");
    alert( message );
}

RegExp.leftContextでなくてRegExp["$`"]RegExp.rightContextRegExp["$'"]でも良い。while文等で回すとexecメソッドは次にマッチするもののデータを返し、マッチするものが無ければnullを返すみたい。
これらを使えばrepleceメソッドでは出来ない、複雑な置換ができそうだ。

え? こんなの常識? いいの、これは自分用メモだから。