[#28446] named capture and /g, /G option — "K.Kosako" <sndgk393@...>

Ruby 1.9に、

30 messages 2006/03/21
[#28449] Re: named capture and /g, /G option — "K.Kosako" <sndgk393@...> 2006/03/21

> Ruby 1.9に、

[#28452] Re: named capture and /g, /G option — Yukihiro Matsumoto <matz@...> 2006/03/21

まつもと ゆきひろです

[#28453] Re: named capture and /g, /G option — "K.Kosako" <sndgk393@...> 2006/03/21

Yukihiro Matsumoto wrote:

[ruby-dev:28457] Re: named capture and /g, /G option

From: "K.Kosako" <sndgk393@...>
Date: 2006-03-22 12:03:54 UTC
List: ruby-dev #28457
Yukihiro Matsumoto wrote:
> |  case 3. /..(?<name>..)../   (名前付き捕獲式集合は使用、オプションなし)
> |
> |     (...) は、非捕獲式集合として扱われる。
> |     番号指定参照/呼び出しは不許可。
> 
> この「不許可」というのは\1などが文法エラーになるという意味で
> しょうか。それとも単にマッチしないという意味?

Tanaka Akira wrote:
> 現在はこの場合に番号が使えるようですが、これはこの仕様にはま
> だなっていないということですか?
>
> % ./ruby -ve '/(?<n>.*)e/ =~ "abcdef"; p $~[1], $~[:n]'
> ruby 1.9.0 (2006-03-21) [i686-linux]
> "abcd"
> "abcd"

これは、鬼車のドキュメントをコピーしたものなので、
許可、不許可は正規表現パターンに関することだけです。
Rubyレベルでの仕様変更/拡張については、昨日の作業
の中では全く忘れていました。

もう忘れてしまっているのですが、このあたりの仕様
について、以前の議論で結論が出ていたでしょうか?

問題点を整理すると、

パターンとオプションの組み合わせで番号参照が
無効になっているとき、Rubyレベルで、
  1. 置換文字列の中の番号参照を実行時エラーにするか?
  2. MatchData#[]の引数の番号(n >= 1)参照を
     実行時エラーにするか?
  3. $1, ... $9を実行時エラーにするか?
それと、
  4. 置換文字列の中の名前指定の形式

私の意見としては、1,2,3全部許可にするか、
3のみ許可のどちらかかなと思います。
4.については、パターン中の名前参照と同じ形式
\k<name>で良いかなと思います。

4だけは今日実装しようと思いますが、後で
変更してもらっても構いません。
--
小迫


In This Thread