[#15357] Regexp literal and Regexp.new() — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

14 messages 2001/12/05
[#15358] Regexp in UTF-8 (Re: Regexp literal and Regexp.new()) — TAKAHASHI Masayoshi <maki@...> 2001/12/05

高橋征義です。むーん、問題のありかが違ったかも。

[#15435] Time#utcoff — Tanaka Akira <akr@...17n.org>

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

20 messages 2001/12/13
[#15436] Re: Time#utcoff — matz@... (Yukihiro Matsumoto) 2001/12/14

まつもと ゆきひろです

[#15505] ERb — m_seki@...

74 messages 2001/12/20
[#15560] Re: ERb — Tanaka Akira <akr@...17n.org> 2001/12/27

In article <20011220114249J.seki@mr.nasu.toshiba.co.jp>,

[#15879] Re: ERb — m_seki@... 2002/02/12

[#15884] Re: ERb — Tanaka Akira <akr@...17n.org> 2002/02/14

In article <m3eljr5o9m.wl@edwin.mva.biglobe.ne.jp>,

[#15885] Re: ERb — m_seki@... 2002/02/14

[#15886] Re: ERb — m_seki@... 2002/02/14

[#15887] Re: ERb — TAKAHASHI Masayoshi <maki@...> 2002/02/14

高橋征義です。

[#15888] Re: ERb — m_seki@... 2002/02/14

[#15896] Re: ERb — Tanaka Akira <akr@...17n.org> 2002/02/15

In article <20020215085405G.seki@mr.nasu.toshiba.co.jp>,

[#15898] Re: ERb — m_seki@... 2002/02/15

[#15900] Re: ERb — TADA Tadashi <sho@...> 2002/02/16

ただただしです。

[#15901] Re: ERb — m_seki@... 2002/02/16

[#15906] Re: ERb — matz@... (Yukihiro Matsumoto) 2002/02/17

まつもと ゆきひろです

[#15909] 1.6 の寿命 (Re: Re: ERb) — Koji Arai <JCA02266@...> 2002/02/17

新井です。

[#15507] fileutils (2) — Minero Aoki <aamine@...>

あおきです。

30 messages 2001/12/20
[#15512] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/20

高橋征義です。

[#15513] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/21

あおきです。

[#15515] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/21

高橋征義です。結論は最後に。

[#15516] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/21

あおきです。

[#15533] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/22

高橋征義です。

[#15536] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/24

あおきです。

[#15540] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/24

高橋征義です。

[#15545] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/24

あおきです。

[#15557] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/26

高橋征義です。

[#15567] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/27

あおきです。

[#15573] [patch] resolv.rb for win32 platform — Tietew <tietew-ml-ruby-dev@...>

Tietew です。

22 messages 2001/12/28

[ruby-dev:15487] Re: gsub weirdness: gsub(/.*$/, "foo")

From: Wakou Aoyama <wakou@...>
Date: 2001-12-18 04:51:12 UTC
List: ruby-dev #15487
青山です。

On Mon, Dec 17, 2001 at 12:54:27PM +0900,
Akinori MUSHA <knu@iDaemons.org> wrote:

> % ruby -e 'p "aab".scan(/a*b/)'
> ["aab"]
> % ruby -e 'p "aa\n".scan(/a*$/)'
> ["aa", ""]
> 
> というのはあまりうれしくないなと。

私もその気持はわかります。しかし、それを解決するには、* と (?=) が問題
であって、$ つまり、行末の概念というか、定義の問題ではありません。

$ ruby -e 'p "aab".scan(/a*(?=b)/)'
["aa", ""]

1つは、* は空にもマッチするので、ちょっと予想外の所にマッチするという
問題ですね。これは、詳説正規表現に書いてある例です。

$ ruby -e "p 'a 1234 num'.index(/[0-9]*/)"
0
$ ruby -e "p 'a 1234 num'.index(/[0-9]+/)"
2

* の場合は、空にもマッチするので、1234 の部分ではなく、最初の空にマッ
チするので、index 0 となるわけです。

この挙動をどうみるか、という点と、

>  例えば、「gsub()/scan() など連続マッチのとき、 i..j の直後の
> j..j は除外する」という仕様もありえると思いました。つまり現状:

これが先の例の違いである、b と (?=b) の違い、すなわち、(?=) はマッチ位
置を先に進めるか、という問題ですが、これを進めるようにしてしまうと、問
題がおこる場合もあります。

$ ruby -e 'p "ababab".scan(/a(?=b)|b(?=a)/)'
["a", "b", "a", "b", "a"]

ちょっといいかげんな例ですが、これで、もし、j..j を除外する、すなわち、
(?=) のマッチで、直前からカーソルを移動すると、おそらく、a(?=b) にマッ
チした直後の b(?=a) はマッチしなくなり、b(?=a) の直後の a(?=b) はマッ
チしない、という動きになるように予測されます。

従って、簡単には捨てたり進めたり、という解決はできず、挙動を変えるには、
かなり難しい議論が必要になってくると思われます。

という事で、

>  最後の \n の特別扱いという点では、
> 
> % ruby -e 'p "\n\n".scan(/\n*$/)'
> ["\n", ""]
> 
> という結果が特徴的ですね。上記のもろもろを踏まえていないとかなり
> 悩むに違いない。そして「直後の空」はやはり奇妙。

これもやはり、\n の特別扱いや、直後の空、というより、(?=) の直前の *
の問題というか、特徴というか、そういう事の1つでしょうね。

この挙動をご提案の挙動にできれば、私もわかりやすくて良いとは感じますが、
詳説正規表現のコラムに、そういうものだ、という感じで書かれているぐらい
ですから、改善というか、変更はかなり困難なのではないかな、と予測します。


-- 
青山 和光 Wakou Aoyama  <wakou@fsinet.or.jp>

In This Thread