[ruby-trunk - Bug #8583][Open] A problem of condition regexp with a named capture

Issue #8583 has been reported by ohai (Ippei Obayashi).


Bug #8583: A problem of condition regexp with a named capture

Author: ohai (Ippei Obayashi)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-06-30 trunk 41711) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN

以下の条件分岐を含む正規表現は “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 がもれています。

添付したパッチのように修正すれば直ると思います。

Issue #8583 has been updated by nagachika (Tomoyuki C.).

Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 1.9.3: UNKNOWN,
2.0.0: REQUIRED


Bug #8583: A problem of condition regexp with a named capture

Author: ohai (Ippei Obayashi)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-06-30 trunk 41711) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: REQUIRED

以下の条件分岐を含む正規表現は “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 がもれています。

添付したパッチのように修正すれば直ると思います。

Issue #8583 has been updated by usa (Usaku NAKAMURA).

Backport changed from 1.9.3: UNKNOWN, 2.0.0: REQUIRED to 1.9.3:
DONTNEED, 2.0.0: REQUIRED


Bug #8583: A problem of condition regexp with a named capture

Author: ohai (Ippei Obayashi)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-06-30 trunk 41711) [x86_64-linux]
Backport: 1.9.3: DONTNEED, 2.0.0: REQUIRED

以下の条件分岐を含む正規表現は “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 がもれています。

添付したパッチのように修正すれば直ると思います。

Issue #8583 has been updated by knu (Akinori MUSHA).

Thank you. I’ve just reported this to the upstream with the given test
cases: Fix a renumbering bug in condition regexp with a named capture. by knu · Pull Request #20 · k-takata/Onigmo · GitHub

Bug #8583: A problem of condition regexp with a named capture

Author: ohai (Ippei Obayashi)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-06-30 trunk 41711) [x86_64-linux]
Backport: 1.9.3: DONTNEED, 2.0.0: REQUIRED

以下の条件分岐を含む正規表現は “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 がもれています。

添付したパッチのように修正すれば直ると思います。

Issue #8583 has been updated by nagachika (Tomoyuki C.).

Status changed from Open to Assigned
Assignee set to nagachika (Tomoyuki C.)


Backport #8583: A problem of condition regexp with a named capture

Author: ohai (Ippei Obayashi)
Status: Assigned
Priority: Normal
Assignee: nagachika (Tomoyuki C.)
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 がもれています。

添付したパッチのように修正すれば直ると思います。

Issue #8583 has been updated by knu (Akinori MUSHA).

Onigmo 5.13.5 has been released, which includes the fix.

Bug #8583: A problem of condition regexp with a named capture

Author: ohai (Ippei Obayashi)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-06-30 trunk 41711) [x86_64-linux]
Backport: 1.9.3: DONTNEED, 2.0.0: REQUIRED

以下の条件分岐を含む正規表現は “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 がもれています。

添付したパッチのように修正すれば直ると思います。