2008/03/23
AS3:RegExp がつらくて preg_match_all にしてみた
正規表現をこねこね書けるように /^.*$/i を "/^.*$/i" みたいに使えるようにしてみた
ASは参照渡しを明示的に書けないらしいですが、Array とかだと参照渡しになるとどっかに書いてました。new で上書きすると参照が切れてしまうっぽいから splice(0) です。
//サンプル
file_get_contents( test_on_load, "test.htm");
function test_on_load(body) {
var m = new Array("dsdsdsds")
var i = preg_match_all("/^<(\/[^>]*)>$/igm", body, m)
trace( i ,"■",m," --- ",m[0]);
//出力サンプル:3 ■ </init>,/init,</getter>,/getter,</filer>,/filer --- </init>,/init
};
function preg_match_all( pattern, subject, matches:Array) {
matches.splice(0)
var a = explode("/", pattern)
var option = a.pop()
a.shift()
var r = new RegExp(implode("/",a),option)
var reg = r.exec(subject)
while (reg != null) {
//trace( reg.index, "\t", reg);
matches.push(reg)
reg = r.exec(subject);
}
return(count(matches))
}
function file_get_contents( on_load:Function, filename ){
var u = new URLLoader();
u.addEventListener( Event.COMPLETE, function(o){on_load(o.target.data)} );
u.load(new URLRequest(filename) );
}
function count(m){return(m.length)}
function explode( string_separator:String, string_string:String ):Array{
return(string_string.split(string_separator))
}
function implode( string_glue:String, array_pieces:Array ):String{
return(array_pieces.join(string_glue))
}
p.s.
FlashDevelop が、正規表現を直書きして改行するとばっちりエラーのでる整形をしてくれるのは仕様?