From: matz@... (Yukihiro Matsumoto) Date: 2002-04-10T12:26:00+09:00 Subject: [ruby-dev:16823] Re: sharing sub-regexp まつもと ゆきひろです In message "[ruby-dev:16822] Re: sharing sub-regexp" on 02/04/10, "K.Kosako" writes: |> 定義: (? ) ないしは (?'name') |> 参照: \k |> 置換: ${name} |> |> みたいです。ふむ。.NET のほうが単純ですね。 | |<, >は、HTML, XMLタグでよく使用されるので、{, }を使いたい気がします。 タグに使われているというのはあまり関係ないのでは。 <, > をメ タ文字にするという話ではないので。ただ、"(?<"という並びは look-behind ですでに使われていますね。ならば (?'name') のほ うが (?{name}) よりは有利かなあ。 |1. 名前定義: (?{name}...) (pattern, capture) |2. 名前定義: (?{:name}...) (patternのみ、captureなし) |3. 後方参照: \k{name} |4. 置換: ${name} |5. パターン複製: \j{name} or \j{capture-number} |6. パターン共有: \J{name} or \J{capture-number} | |1のタイプの名前定義はcapture groupと共通の番号が振られるので、 |それを使用しても参照できる。 |1のタイプの名前定義は重複を許し、参照されたときには後の定義を優先で |順番に結果を参照する。 名前には慎重になったほうがよいと思います。特に新規(他に同じ 機能のない)になるものは。まあ、いずれは決めるしかないのです が、むやみにバリエーションを増やしてもしょうがないので。 ちなみに (?{ code }) はPerlではコードを実行する正規表現です。 まつもと ゆきひろ /:|)