In article <20020405044506.D4784349 / helium.ruby-lang.org>,
  "K.Kosako" <kosako / sofnec.co.jp> writes:

> Pythonについてだけ、リファレンスマニュアルを見て確認しました。
> 名前でマッチング結果を参照できる機能だけで、田中さんが提案した
> パターン共有機能はないようですね。(.NETについては全く知りませんが。)

.NET のは(もともと zt日記で知ったのですが)

http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconregularexpressionslanguageelements.asp

で参照できます。

> 1. 文法
>    Pythonの場合は、定義: (?P<name>...), 参照: (?P=name), 共有: なし

あと、gsub などでの参照も必要ですね。
Python では \g<1> とか \g<name> が使えるようになっているようです。

.NET では

定義: (?<name>   ) ないしは (?'name') 
参照: \k<name>
置換: ${name} 

みたいです。ふむ。.NET のほうが単純ですね。

また、.NET には capture されてるかどうかで選択的にパターンを選ぶという
(?(name)yes|no) と、いまひとつ挙動が良く理解できない (?<name1-name2> ) 
というものがあるようです。

後者は、Balancing group definition というやつで、括弧のネストを扱える
とか書いてあるのですが... だれか理解できる人がいたら教えて下さい。

> 2. 名前定義は、結果参照機能とパターン共有機能の両方に兼用できるものにするか、
>    独立したものにするか。

兼用として、name を _ で始めると結果参照機能が抑止されるというのがいい
んじゃないかなぁ、と思っています。

> 3. 同じ名前の重複定義を許すか
>    "(?<val>[^"]*)"|(?<val>[^ >]*)

私は賛成です。が、私はパターンマッチに対しほんのちょっとかすかにマニアッ
クな趣味を持っているため、機能が増えることを無条件に歓迎する傾向があり
ます。従ってそれほど強く主張する気はありません。他の人の意見を聞いてみ
たいですね。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)