レス数:6 / 状態:解決済み / No:40 / ATOM
1
名前:k
日付:2010/07/19(月)23:33:18
ID:9kJEWPZA4knz
毎回お世話になっております。
as3.0の正規表現についての質問です。
正規表現で()でくくった中身を後で取り出したいのですが、方法が分かりません。
ちょうど、JavaScriptではこのような感じです。
var r = new RegExp("a(.)c");
"abc".match(r);
alert(RegExp.$1);
これをActionScript3.0でしようとすると、エラーが出ます。
var r:RegExp = new RegExp("a(.)c");
"abc".match(r);
trace(RegExp.$1);
方法をご存知の方は、ご教授願います。
as3.0の正規表現についての質問です。
正規表現で()でくくった中身を後で取り出したいのですが、方法が分かりません。
ちょうど、JavaScriptではこのような感じです。
var r = new RegExp("a(.)c");
"abc".match(r);
alert(RegExp.$1);
これをActionScript3.0でしようとすると、エラーが出ます。
var r:RegExp = new RegExp("a(.)c");
"abc".match(r);
trace(RegExp.$1);
方法をご存知の方は、ご教授願います。
2
日付:2010/07/20(火)18:59:55
ID:qPr0YUEfJmUW
match() メソッドの戻り値から配列を取得できます。
var r:RegExp = new RegExp("a(.)c");
var ary:Array = "abc".match(r);
var i:int;
var n:int = ary.length;
for(i=0;i<n;i++){
trace(i,ary[i]);
}
var r:RegExp = new RegExp("a(.)c");
var ary:Array = "abc".match(r);
var i:int;
var n:int = ary.length;
for(i=0;i<n;i++){
trace(i,ary[i]);
}
3
名前:k
日付:2010/07/20(火)23:43:29
ID:9kJEWPZA4knz
すばやい回答、ありがとうございます!
もうひとつ聞きたいのですが、
replace()メソッドを使ったとき、同じように後から取り出したいときは、
どのようにすればいいのでしょうか?
replace()の戻り値はStringですし、無理でしょうか?
もうひとつ聞きたいのですが、
replace()メソッドを使ったとき、同じように後から取り出したいときは、
どのようにすればいいのでしょうか?
replace()の戻り値はStringですし、無理でしょうか?
4
日付:2010/07/21(水)00:37:35
ID:yDl4tzgDJCHR
replace() メソッドの使用例を見るとこんな感じでしょうか。
http://help.adobe.com/ja_JP/Flash/CS5/AS3LR/String.html#replace()
var r:RegExp = new RegExp("a(.)c");
var str:String = "abc".replace(r,"$1");
trace(str);
http://help.adobe.com/ja_JP/Flash/CS5/AS3LR/String.html#replace()
var r:RegExp = new RegExp("a(.)c");
var str:String = "abc".replace(r,"$1");
trace(str);
5
名前:k
日付:2010/07/21(水)23:34:06
ID:9kJEWPZA4knz
なるほど…
では、キャプチャだけを取り出そうと思ったら、
全文に一致するようにしないと駄目なのでしょうか。
var r:RegExp = new RegExp("a(.)c");
var str:String = "123abc123".replace(r,"$1");
trace(str); // これだと "123b123"
var r:RegExp = new RegExp("^.*a(.)c.*$");
var str:String = "123abc123".replace(r,"$1");
trace(str); // これなら "b"
最初の質問とは外れますが、
元々の文字列をreplace()で変更しつつ、キャプチャを取得するには、
正規表現を一回だけ使って、
var origin:String = "123abc123";
origin = origin.replace(/a(.)c/,"$1"); // originを変更
var str:String = RegExp.$1; // strにキャプチャを代入
とすることはできず、
今まで回答してくださったのに習うと、
var origin:String = "123abc123";
var str:String = origin.match(/a(.)c/)[1]; // strにキャプチャを代入
origin = origin.replace(/a(.)c/, "$1"); // originを変更
または
var origin:String = "123abc123";
var str:String = origin.replace(/^.*a(.)c.*$/, "$1"); // strにキャプチャを代入
origin = origin.replace(/a(.)c/, "$1"); // originを変更
とするのが良さそうですね。
正規表現について、まだまだ知るべきことがありそうです。
ご回答、ありがとうございました。
では、キャプチャだけを取り出そうと思ったら、
全文に一致するようにしないと駄目なのでしょうか。
var r:RegExp = new RegExp("a(.)c");
var str:String = "123abc123".replace(r,"$1");
trace(str); // これだと "123b123"
var r:RegExp = new RegExp("^.*a(.)c.*$");
var str:String = "123abc123".replace(r,"$1");
trace(str); // これなら "b"
最初の質問とは外れますが、
元々の文字列をreplace()で変更しつつ、キャプチャを取得するには、
正規表現を一回だけ使って、
var origin:String = "123abc123";
origin = origin.replace(/a(.)c/,"$1"); // originを変更
var str:String = RegExp.$1; // strにキャプチャを代入
とすることはできず、
今まで回答してくださったのに習うと、
var origin:String = "123abc123";
var str:String = origin.match(/a(.)c/)[1]; // strにキャプチャを代入
origin = origin.replace(/a(.)c/, "$1"); // originを変更
または
var origin:String = "123abc123";
var str:String = origin.replace(/^.*a(.)c.*$/, "$1"); // strにキャプチャを代入
origin = origin.replace(/a(.)c/, "$1"); // originを変更
とするのが良さそうですね。
正規表現について、まだまだ知るべきことがありそうです。
ご回答、ありがとうございました。
6
名前:状態変更
日付:2010/07/21(水)23:34:59
ID:9kJEWPZA4knz
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 : | 解決済み |
投稿開始日 : | 2010/07/19(月)23:33:18 |
投稿終了日 : | 2010/07/21(水)23:34:59 |
投稿者 : | k |
レス総数 : | 6 |
スレッド番号 : | 40 |