よしだです

matz / netlab.co.jp (Yukihiro Matsumoto) writes:
> Ruby ruby-1.3.1-990128 is out, check out:

UTF-8 で 

  "あいうえお" =~ /\W/; p [$`, $&, $']

などとすると

   [BUG] wrong reg_kcode value (0x8000)

が出てしまうので,ちょっといじってみました。

--- ruby-1.3.1-990128/re.c.org	Tue Jan 26 12:36:52 1999
+++ ruby-1.3.1-990128/re.c	Sat Jan 30 10:06:41 1999
@@ -826,6 +826,9 @@
 	  case 's': case 'S':
 	    flag |= 12;
 	    break;
+	  case 'u': case 'U':
+	    flag |= 16;
+	    break;
 	  default:
 	    break;
 	}
@@ -886,6 +889,8 @@
 	return MBCTYPE_EUC;
       case KCODE_SJIS:
 	return MBCTYPE_SJIS;
+      case KCODE_UTF8:
+	return MBCTYPE_UTF8;
       case KCODE_NONE:
 	return MBCTYPE_ASCII;
     }
@@ -905,6 +910,8 @@
 	kcode |= 8; break;
       case KCODE_SJIS:
 	kcode |= 12; break;
+      case KCODE_UTF8:
+	kcode |= 16; break;
       default:
 	break;
     }


ところで,\w, \W, \b あたりがうまく多バイト文字を扱えないよ
うです。EUC, SJIS, UTF8 でそれぞれ結果が違ってしまいます。
多バイト文字は \w と \W のどちらにマッチするのが正しいのでしょ
う?

-- 
    吉田正人  INS エンジニアリング(株)
              都市情報システム事業部
    yoshidam / inse.co.jp
    yoshidam / yoshidam.net