From: "NARUSE, Yui" Date: 2010-05-11T10:55:02+09:00 Subject: [ruby-dev:41261] Re: 正規表現オブジェクト中のキャプチャの数 成瀬です。 2010年5月11日10:27 KISHIMOTO, Makoto : > きしもとです > >> onig_number_of_captures に相当するメソッドはあってもよいかなとは思うのですが、 >> * メソッド名 > > たしかに今のところ他に num???s というメソッドってないですよねぇ > >> * そのユースケースでは onig_number_of_captures を使っても完全ではない >> が気になります。 >> >> 具体的には、名前付きキャプチャが混ざった場合、そのコードは動かなくなります。 >> 思うに、番号ではなく、名前で引いた方がいいんじゃないでしょうか。 > > if ptn.numcapturs > 0 then raise end のようにチェックするのですが、 > > 名前付きキャプチャもonig_number_of_capturesで数えられるのでfalse > negativeではないですし、名前付きキャプチャは普通のキャプチャとしても働くので、 > false positiveでもなく、問題ないはずではないでしょうか? 名前付きキャプチャは普通のキャプチャのようにインデックスで引けるんですが、 一方で名前付きキャプチャが入ると普通のカッコではキャプチャされなくなるんですよ。 > "でてこいいけのこい".gsub_multi([/(?こい)/, /いけ/], ["いけ", "こい"]) TypeError: no implicit conversion from nil to integer from (irb):14:in `[]' from (irb):14:in `block in gsub_multi' from (irb):12:in `gsub' from (irb):12:in `gsub_multi' from (irb):20 from /home/naruse/local/ruby-trunk/bin/irb:12:in `
' -- NARUSE, Yui naruse@airemix.jp