岩室です。

String#scan でハマったので調べてみたら、

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/~poffice/mail/ruby-list/5616

とゆーのが、

http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=String

に反映されていなかったのですね。RWiki使ってるようですので、直してみよー
かと思ったのですが、うまい説明が思い付かずに断念しました(^^; 誰か直し
てください(他力本願)

あと、gsub に対して sub があるのに、scan に対して一回だけマッチするメ
ソッドってないんですね。

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/~poffice/mail/ruby-list/5622

って解決方法もありますが、なんか見た目が美しくないです。こんな風にしちゃ
だめなんでしょうか?(^^;

------------------------------------------------------------------------------
--- string.c.ORIG	Wed Apr  4 20:12:13 2001
+++ string.c	Wed Apr  4 20:15:29 2001
@@ -2575,8 +2575,8 @@
 }
 
 static VALUE
-rb_str_scan(str, pat)
-    VALUE str, pat;
+str_scan(str, pat, repeat)
+    VALUE str, pat, repeat;
 {
     VALUE result;
     long start = 0;
@@ -2584,11 +2584,16 @@
 
     pat = get_pat(pat);
     if (!rb_block_given_p()) {
-	VALUE ary = rb_ary_new();
+	VALUE ary = repeat ? rb_ary_new() : Qfalse;
 
 	while (!NIL_P(result = scan_once(str, pat, &start))) {
 	    match = rb_backref_get();
-	    rb_ary_push(ary, result);
+	    if (ary) {
+		rb_ary_push(ary, result);
+	    } else {
+		ary = result;
+		break;
+	    }
 	}
 	rb_backref_set(match);
 	return ary;
@@ -2599,12 +2604,28 @@
 	rb_match_busy(match);
 	rb_yield(result);
 	rb_backref_set(match);	/* restore $~ value */
+	if (!repeat)
+	    break;
     }
     rb_backref_set(match);
     return str;
 }
 
 static VALUE
+rb_str_scan(str, pat)
+    VALUE str, pat;
+{
+    return str_scan(str, pat, Qtrue);
+}
+
+static VALUE
+rb_str_scan_once(str, pat)
+    VALUE str, pat;
+{
+    return str_scan(str, pat, Qfalse);
+}
+
+static VALUE
 rb_f_scan(self, pat)
     VALUE self, pat;
 {
@@ -2848,6 +2869,7 @@
     rb_define_method(rb_cString, "include?", rb_str_include, 1);
 
     rb_define_method(rb_cString, "scan", rb_str_scan, 1);
+    rb_define_method(rb_cString, "match", rb_str_scan_once, 1);
 
     rb_define_method(rb_cString, "ljust", rb_str_ljust, 1);
     rb_define_method(rb_cString, "rjust", rb_str_rjust, 1);
------------------------------------------------------------------------------
-- 
岩室元典 [E-Mail: vmi / kw.netlaputa.ne.jp / iwa / mmp.fujitsu.co.jp]
「売られたケンカは最後まで買うこと」あきらめるな。食らいついてはなれるな。
眼をそらさずに、背をむけるな。おとしまえをつけるまで、勝負は終わっていない。
(「楽園の魔女たち 〜星が落ちた日〜」樹川さとみ/コバルト文庫)