[ruby-list:37726] Re: マッチした部分を配列にしまう方法

From: matz@... (Yukihiro Matsumoto)
Date: 2003-05-26 07:21:51 UTC
List: ruby-list #37726
まつもと ゆきひろです

In message "[ruby-list:37723] Re: マッチした部分を配列にしまう方法"
    on 03/05/25, Koji Arai <JCA02266@nifty.ne.jp> writes:

|>   * この修正はあるべきでない → 理由は?
|>   * この修正は非互換である   → どう対応するか?
|> 
|> のいずれかだとは思うのですが、前者なら議論した上で合意ができ
|> れば元に戻せばよいことですし、後者なら移行パスを検討すれば良
|> いと思います。
|
|前者です。理由は、直観的でないからです(私の感覚で)。
|
|なぜ、直観的でないか考えたところ、=~ は、正規表現マッチを行
|う演算子という認識があるからだとおもいます。String#index は
|正規表現マッチではありませんから。
|
|以前は =~ に複数の意味があるようには思えなかったが、今は複数
|の意味があるように思えるっと言い替えてもいいです。

まあ、理解できる考えです。

|# そもそも string =~ string をなくしてもいいのではないかと思
|# えます。

もうちょっと整理してみましょう。考えられる組み合わせは

  string =~ regex
  regex =~ string
  string =~ string

の3通りです。前二者については疑問はないですよね。正規表現が
パターンで、文字列がマッチ対象とはっきり分かりますから。

で、三番目のパターンをどうするか、が問題ですが、

  (a) 右辺を正規表現化してパターンとみなす
  (b) 右辺を文字列のままパターンとみなす
  (c) 禁止

くらいの候補が考えられると思います。左辺がパターンと言う組み
合わせも考えられないことはありませんが、「str =~ str」は右辺
がパターンというのはAWK以来の慣習のようですから、むげに捨て
るのもなんだと思うので、考えないことにしましょう。そうすると

  (a) 1.6
  (b) 現在の1.8
  (c) 新井案

ということになるんでしょうか。(a)が気に入らないから(b)にした
わけですが、考えてみれば(c)でも妥協できるかも。

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

In This Thread