新井です。

In message "[ruby-list:37854] splitで複数の改行文字"
  on 04 Jul 2003 06:35:29 +0900,
  堀川 久 <vzw00011 / nifty.ne.jp> wrote:
> こんにちは。
> 
> 次のスクリプトでのsplitの挙動がおかしいような気がするのですが、なぜこ
> のようになるのでしょうか。
> 
> s = "abc\n\ndef"
> p s.split(/(\r?\n)+/)       #=> ["abc", "\n", "def"] ???
> p s.gsub(/(\r?\n)+/, ":")   #=> "abc:def"

この質問だと何を期待しているかがわからないですよね。

仮に
["abc", "\n\n", "def"]
を期待してると仮定すると

s = "abc\n\ndef"
p s.split(/((?:\r?\n)+)/)
=> ruby 1.6.8 (2002-12-24) [i586-linux]
   ["abc", "\n\n", "def"]
=> ruby 1.8.0 (2003-06-28) [i586-linux]
   ["abc", "\n\n", "def"]

です。元のは

s = "abc\n\ndef"
p s.split(/(\n)\n/)
=> ruby 1.6.8 (2002-12-24) [i586-linux]
   ["abc", "\n", "def"]
=> ruby 1.8.0 (2003-06-28) [i586-linux]
   ["abc", "\n", "def"]

となるのと同じです。

--
新井康司 (Koji Arai)