[#16732] sharing sub-regexp — Tanaka Akira <akr@...17n.org>

Oniguruma についてひとつ要望があります。

51 messages 2002/04/03
[#16744] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/04

Tanaka Akiraさんの<hvopu1hxfyd.fsf@coulee.a02.aist.go.jp>から

[#16746] Re: sharing sub-regexp — matz@... (Yukihiro Matsumoto) 2002/04/04

まつもと ゆきひろです

[#16753] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/04

In article <1017890618.302241.17865.nullmailer@ev.netlab.jp>,

[#16755] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/05

Tanaka Akiraさんの<hvo7knn93ug.fsf@coulee.a02.aist.go.jp>から

[#16756] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/05

In article <20020405044506.D4784349@helium.ruby-lang.org>,

[#16822] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/10

Tanaka Akiraさんの<hvopu1e4omy.fsf@coulee.a02.aist.go.jp>から

[#16831] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/10

In article <20020410025054.C8DF0915@helium.ruby-lang.org>,

[#16863] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/11

In article <hvor8lnchak.fsf@coulee.a02.aist.go.jp>,

[#16877] Re: sharing sub-regexp — Shugo Maeda <shugo@...> 2002/04/12

前田です。

[#16887] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/12

In article <87pu15z80q.wl@studly.priv.netlab.jp>,

[#16909] Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/15

前田です。

[#16912] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/15

In article <87g01x1e6m.wl@studly.priv.netlab.jp>,

[#16931] Re: Regexp#to_s — Kazuhiro NISHIYAMA <zn@...> 2002/04/16

西山和広です。

[#16934] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/16

In article <20020416180631.988E.ZN@mbf.nifty.com>,

[#16938] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/17

前田です。

[#16939] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/17

In article <87u1qaj0xe.wl@studly.priv.netlab.jp>,

[#16947] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/18

前田です。

[#16950] Re: Regexp#to_s — matz@... (Yukihiro Matsumoto) 2002/04/18

まつもと ゆきひろです

[#16951] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/18

In article <1019116103.420173.12691.nullmailer@picachu.netlab.jp>,

[#16960] Re: Regexp#to_s — nobu.nakada@... 2002/04/18

なかだです。

[#16761] StringIO — tadf@...

ふなばです。

43 messages 2002/04/05
[#16786] Re: StringIO — nobu.nakada@... 2002/04/08

なかだです。

[#16802] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#16803] Re: StringIO — nobu.nakada@... 2002/04/09

なかだです。

[#16804] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#17221] Re: StringIO — Wakou Aoyama <wakou@...> 2002/05/30

青山です。

[#17230] Re: StringIO — matz@... (Yukihiro Matsumoto) 2002/05/30

まつもと ゆきひろです

[#17231] Re: StringIO — Tanaka Akira <akr@...17n.org> 2002/05/30

In article <1022740594.117106.6073.nullmailer@picachu.netlab.jp>,

[#17233] IO#size — Shugo Maeda <shugo@...> 2002/05/30

前田です。

[#17239] Re: IO#size — Tanaka Akira <akr@...17n.org> 2002/05/31

In article <874rgqdt3x.wl@studly.priv.netlab.jp>,

[#17253] Re: IO#size — Wakou Aoyama <wakou@...> 2002/05/31

青山です。

[#16790] Ruby Shim — "Akinori MUSHA" <knu@...>

 1.7 early access kit という仮称で提案した構想ですが、先ほど

27 messages 2002/04/08
[#16796] Re: Ruby Shim — Koji Arai <JCA02266@...> 2002/04/08

新井です。

[#16833] math.c 1.10 — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

23 messages 2002/04/11
[#16834] Re: math.c 1.10 — matz@... (Yukihiro Matsumoto) 2002/04/11

まつもと ゆきひろです

[#16869] Makefiles dependency — nobu.nakada@...

なかだです。

17 messages 2002/04/12

[ruby-dev:16753] Re: sharing sub-regexp

From: Tanaka Akira <akr@...17n.org>
Date: 2002-04-04 10:04:55 UTC
List: ruby-dev #16753
In article <1017890618.302241.17865.nullmailer@ev.netlab.jp>,
  matz@ruby-lang.org (Yukihiro Matsumoto) writes:

> |(正規表現の拡張なので、まつもとさんに確認が必要でしょうが。)
> 
> 名前。Pythonと.NETのそれぞれで正規表現にこの機能が追加されて
> いますが、名前が違います。なぜかPerlにはないんですよね。

えぇと、この Python や .NET のは shy group を含まないので微妙にずれて
いたりするんですがそれはそれとすると、想像ですが、Perl では名前を付け
ても Perl のコードからアクセスすることができない(MatchData に対応する
ものがないので特殊変数をさらに増やす必要がある)から入れにくいんじゃな
いですかね。

Python では MatchObject (Ruby でいう MatchData) があるので、group メソッ
ドに名前を文字列で渡すことにより自然に取り出せます。

Ruby にあってもべつに問題ない機能だと思います。$~[:name] とかで取り出
せばいいのでしょう。たぶん、とても便利だと思います。

たとえば、最近、

      if /(\A\z)
         |(\A\*)
         |(\A\d\.)
         |(\A:)
         |(\A\s)
         |(\A---)
         |(\A=)
         |(\A\|\s)
         /x =~ line
        if    $~[1]; '_'
        elsif $~[2]; 'u'
        elsif $~[3]; 'o'
        elsif $~[4]; 'd'
        elsif $~[5]; 'i'
        elsif $~[6]; 'h'
        elsif $~[7]; enable_section ? 's' : 'X'
        elsif $~[8]; 't'
        end

というコードを書いたのですが、このコードでは番号の対応をとるのが厄介で
す。もし、

      if /(?<empty>\A\z)
         |(?<unordered>\A\*)
         |(?<ordered>\A\d\.)
         |(?<definition>\A:)
         |(?<indent>\A\s)
         |(?<hr>\A---)
         |(?<section>\A=)
         |(?<table>\A\|\s)
         /x =~ line
        if    $~[:empty]; '_'
        elsif $~[:unordered]; 'u'
        elsif $~[:ordered]; 'o'
        elsif $~[:definition]; 'd'
        elsif $~[:indent]; 'i'
        elsif $~[:hr]; 'h'
        elsif $~[:section]; enable_section ? 's' : 'X'
        elsif $~[:table]; 't'
        end

と書けるんならとても幸せです。まぁ、この場合は普通のマッチなので、それ
ぞれのパターンで別個にマッチさせてもいいのですが、String#scan や
String#gsub だとそうもいきません。

なお、Python のやつは単に番号に対して alias を付けるだけな感じですが、
.NET ではそれだけではないところには注意しないといけないかも知れません。

たとえば、複数のグループに同じ名前を付けることができるので、

  href=(?:"(?<val>[^"]*)"|(?<val>[^ >]*)

というような用途に使えたり、他にもいろいろな機能に関係しているようです。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)

In This Thread