https://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112010-05-19T22:14:29ZRuby Issue Tracking SystemRuby master - Bug #3319: Regexp#unionの説明と動作で食い違いがある。https://bugs.ruby-lang.org/issues/3319?journal_id=111052010-05-19T22:14:29Zmame (Yusuke Endoh)mame@ruby-lang.org
<ul></ul><p>=begin<br>
遠藤です。</p>
<p>2010年5月19日21:43 Masaya Tarui <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a>:</p>
<blockquote>
<p>ドキュメントでは要素のどれにでもマッチする正規表現を返すとしているのに対し、<br>
実装では、<br>
・後方参照を含む場合に他の要素の影響を受けて参照対象がずれる可能性がある。<br>
・文字コード10を意味していた'\10'が後方参照として扱われる可能性がある。<br>
・同じ名前の名前付き捕獲式集合を持つ要素同士のunionではエラーになる。<br>
といったものです。</p>
</blockquote>
<p>当面は「与えられたパターンにキャプチャがあったら不定」ってことで<br>
どうでしょうか。</p>
<p>diff --git a/re.c b/re.c<br>
index dddd941..e272146 100644<br>
--- a/re.c<br>
+++ b/re.c<br>
@@ -3195,6 +3195,7 @@ rb_reg_s_union(VALUE self, VALUE args0)</p>
<ul>
<li>
<em>pattern</em>s, i.e., will match any of its parts. The <em>pattern</em>s</li>
<li>can be Regexp objects, in which case their options will be preserved, or</li>
<li>Strings. If no patterns are given, returns <code>/(?!)/</code>.</li>
</ul>
<ul>
<li>
<ul>
<li>The behavior is unspecified if any given <em>pattern</em> contains capture.</li>
<li>
<li>
<pre><code>Regexp.union #=> /(?!)/
</code></pre>
</li>
<li>
<pre><code>Regexp.union("penzance") #=> /penzance/
</code></pre>
</li>
</ul>
</li>
</ul>
<p>--<br>
Yusuke Endoh <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a></p>
<p>=end</p> Ruby master - Bug #3319: Regexp#unionの説明と動作で食い違いがある。https://bugs.ruby-lang.org/issues/3319?journal_id=111072010-05-19T23:17:18Ztarui (Masaya Tarui)tarui@prx.jp
<ul></ul><p>=begin<br>
樽家です。</p>
<p>probablyは酷かったですね。すいません。<br>
代案ありがとうございます。これで個人的には特に不満ありません。</p>
<p>=end</p> Ruby master - Bug #3319: Regexp#unionの説明と動作で食い違いがある。https://bugs.ruby-lang.org/issues/3319?journal_id=111362010-05-20T22:57:05Zmame (Yusuke Endoh)mame@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>=begin<br>
This issue was solved with changeset r27929.<br>
Masaya, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<p>=end</p>