[#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:15467] Re: gsub weirdness: gsub(/.*$/, "foo")

From: "Akinori MUSHA" <knu@...>
Date: 2001-12-17 03:54:27 UTC
List: ruby-dev #15467
At Mon, 17 Dec 2001 05:22:53 +0900,
Wakou Aoyama wrote:
> . は無というか空も許容するので、こうなるんでしょうね。
   ^*
> $ ruby -e 'p "\n\n".gsub(/.*$/, "x")'
> "x\nx\n"
> 
> abc にマッチした段階ではカーソルは \n の直前ですから、次のマッチで空に
> マッチしてしまい、結果、二回マッチするという感じじゃないでしょうか。

 その仕組みは分かるんですが、一度マッチした行末にもう一度マッチ
する違和感が払拭できないんです。位置指定子と文字は違うとはいえ、

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

というのはあまりうれしくないなと。

 空へのマッチが無限に続かないのは当然チェックが入っているから
ですが、それと同様の手心というか作為を実装にしのばせることが
できないものかと思います。

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

% ruby -e 'p "aa\n\n".scan(/a*$/)'
["aa", "", ""]

は 0-2, 2-2, 3-3 とマッチしているわけですが、 2-2 は捨ててよい
のではないかという意味です。

0 1 2  3  4
|a|a|\n|\n|

 2 の地点からスタートするなら当然空を計算に入れられるけど、
頭から拾っていく場合、一度マッチした行末で再び空で足踏みする
というのは直感に反するし、盲点になってしまうと思う。

> > knu@archon[2]% ./ruby -e 'p "abc\ndef\n".gsub(/.*$/m, "x")'
> > "xx\n"
> 
> $ perl -e '($s="abc\ndef\n") =~ s/.*$/x/gms; $s=~s/\n/\\n/g; print $s'
> x
> 
> この挙動の違いは、Ruby では、文字列の末尾の \n と文字列の末尾の間には
> 文字も改行も存在しないので、それは行では無い。とみなし、それを反映する
> 為に、文字列の末尾が \n である場合には、$ は文字列の末尾にはマッチしな
> い、となっている為です。
> 
> 書くとややこしいですが、上の実行例を見ると、無条件に文字列の末尾にもマッ
> チさせている Perl よりも、人間には予測しやすい結果となってみえます。

 最後の \n の特別扱いという点では、

% ruby -e 'p "\n\n".scan(/\n*$/)'
["\n", ""]

という結果が特徴的ですね。上記のもろもろを踏まえていないとかなり
悩むに違いない。そして「直後の空」はやはり奇妙。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Somewhere out of a memory.. of lighted streets on quiet nights.."

In This Thread