home > 投稿 > AS3:RegExp がつらくて preg_match_all にしてみた
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 が、正規表現を直書きして改行するとばっちりエラーのでる整形をしてくれるのは仕様?

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/556

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)