From: Yamamoto Atsushi Date: 2001-12-28T10:22:56+09:00 Subject: [ruby-list:33049] Re: regex bug? 山本@東大駒場です. > > irb(main):001:0> /([ab]+)\1/ =~ "baa" > > nil (snip) > > 文字クラスの一文字以上の閉包で,直前にその文字クラスにマッチする文字が > > ある時,かつ後ろで後方参照を使っている時,です. > > これは正しいでしょう。[ab]+ が baa 全体にマッチして、後には何も残らない > から。 え?? よくおっしゃる意味がわからないです.[ab]+ が 最初に欲張って "baa" 全体 にマッチしようとするのはわかるのですが,その結果 \1 のマッチに失敗して 二回バックトラック.さらにそれも失敗. そして "b" を先頭としたマッチを諦めて,結局 [ab]+ は "a" に,そして全体 は "aa" にマッチするのではないのですか? Perl とかでもそうだし. # 実は僕は頓珍漢なことを言っていたりします? 山本 篤 <東京大学総合文化研究科広域科学専攻> mailto:yamamoto@graco.c.u-tokyo.ac.jp http://www.graco.c.u-tokyo.ac.jp/~yamamoto/