まつもと ゆきひろです

In message "[ruby-dev:6347] Re: Ruby 1.3.1-990315"
    on 99/03/16, Wakou Aoyama <wakou / fsinet.or.jp> writes:

|Mastering Regular Expressions では default, single-line, multi-line,
|crean multi-line, obsolute multi-line なんて呼んでいるようです。ちょっ
|と表の形はかえますが、こんな感じです。
|
|default              /s /m の指定無し $*=0    ^$ は文字列 . は \n 含まず
|single-line          /s の指定時              ^$ は文字列 . は \n 含む
|multi-line           /m の指定時              ^$ は改行   . は \n 含まず
|clean multi-line     /m と /s の両方指定      ^$ は改行   . は \n 含む
|obsolute multi-line  /s /m の指定無し $*=1    ~$ は改行   . は \n 含まず

げげげ,そういえば $* の指定と /s /m は働きが違うと以前聞い
たことを思い出しました.しかし,たかが正規表現のオプションに
こんなに組合せがあってしまうのが,さすがperlというかなんとい
うか.

ではrubyではどうするかということを考えると,

  * そもそも変更する必要があるか
  * もう大域変数を導入しないので $* 相当は採用しない
  * ^$と.を独立に制御する必要が無ければ /m で実現「できる」
  * 独立に制御する必要があるのなら別のオプションを用意(/a?)
  * デフォルトはどうするか

なんてことを考える必要があります.技術屋としてはそーゆーこと
に悩んでいるより実装してしまった方が「楽しい」のですが,さす
がに結構なユーザがついてしまったので,あまりヒドい変更を安易
に行うわけにもいきますまい.

|"\n" =~ /\n$/ については [ruby-dev:6277] に書いたように、^ の挙動から
|すると $ の挙動が変ではないかという疑問はあります。

そーですねえ.やはり,すべからく \Z であるべきなんでしょうか?

                                まつもと ゆきひろ /:|)