From: "nagachika (Tomoyuki Chikanaga)" Date: 2013-07-05T00:51:58+09:00 Subject: [ruby-dev:47481] [Backport 200 - Backport #8583][Assigned] A problem of condition regexp with a named capture Issue #8583 has been updated by nagachika (Tomoyuki Chikanaga). Status changed from Open to Assigned Assignee set to nagachika (Tomoyuki Chikanaga) ---------------------------------------- Backport #8583: A problem of condition regexp with a named capture https://bugs.ruby-lang.org/issues/8583#change-40293 Author: ohai (Ippei Obayashi) Status: Assigned Priority: Normal Assignee: nagachika (Tomoyuki Chikanaga) Category: Target version: 以下の条件分岐を含む正規表現は "xy" "yx" にマッチし、"xx" "yy" にはマッチしません。 /\A((x)|(y))(?(2)y|x)\z/ 名前付きキャプチャを用いた以下の正規表現も同じ挙動をするはずですが、そうはなっていません。 /\A((?x)|(?y))(?()y|x)\z/ # "xx" "yy" にマッチして "xy" "yx" にはマッチしない。 2.0.0-p247, trunk の両方で確認しました。 この問題について調べた所、 名前付きキャプチャを使うときキャプチャの番号をrenumberしている 所で renumber がもれています。 添付したパッチのように修正すれば直ると思います。 -- http://bugs.ruby-lang.org/