From: Tanaka Akira Date: 2010-05-12T12:29:57+09:00 Subject: [ruby-dev:41294] Re: 正規表現オブジェクト中のキャプチャの数 2010年5月12日10:02 KISHIMOTO, Makoto : > /foo/, /bar/, /baz/ から /(foo)|(bar)|(baz)/ のような Regexp を作って、 > マッチさせて、$~.captures.index{|x|x} で何番目がマッチしたか見つけているので、 > 通常のキャプチャであっても、入力中に存在すると、ずれるので困るわけです。 > > なので、キャプチャが入力にあったらエラーにする、というチェックを入れる、と。 > 名前付きキャプチャが入力にある場合も、それを見つけてエラーにするだけです。 番号じゃなくて unique な名前をつけてしらべるのはどうですかね。 % ruby -e ' /(?foo)|(?bar)|(?baz)/ =~ "bar" p %w[r0 r1 r2].index {|n| $~[n] }' 1 r1, r2, r3 などの名前が衝突しそうならもっと長い名前にしてください。 -- [田中 哲][たなか あきら][Tanaka Akira]