From: Wakou Aoyama Date: 1999-03-16T17:27:34+09:00 Subject: [ruby-dev:6354] Re: Ruby 1.3.1-990315 青山です。 Tue, Mar 16, 1999 at 04:49:30PM +0900 において Yukihiro Matsumoto さん曰く: > ふーむ,[ruby-dev:6349]での木村さんのメールでは POSIX では > . は \n とマッチする方向だからそっちで統一はどうか,というこ > とですから,現状から . を \n にマッチさせる変更で十分ってこ > となのかしら? そのような感じみたいですね。 > |> * デフォルトはどうするか > |現在のまま。 > > そーなんですかねえ.デフォルトではPerlに合わせることを検討し > てました.^と\A,$と\Zで挙動が違うような気がしたので. ^ や \A に関しては現在でも Perl と同じですし、Perl にしてもこの2つの 定義はシンプルなんですよね。(man perlre より) > ^ Match the beginning of the line > \A Match at only beginning of string 問題は $ と \Z です。 > $ Match the end of the line (or before newline at the end) > \Z Match at only end of string (or before newline at the end) (この定義でいくと、Perl の s/$/::/g の挙動はやはりおかしいような) という事で、定義自体も Ruby とは微妙に異なっています。$ はともかく、は たして \Z はこの定義でいいのか、それとも純粋に文字列の末尾が良いのか。 これに対して、純粋に文字列の末尾を指定したい場合はこのようにしろとあり ます。 > To match the actual end of the string, not ignoring newline, you can > use \Z(?!\n). 複雑です>Perl > |"\n" =~ /\n$/ をどうするかという事が最も難しい問題点ですね。 > > ですねえ.これを救済したい気もしますし,スジを通した方が良い > ような気もします. 上記のように man perlre の定義でいけば文字列の末尾の改行の前にマッチで すから、本来は Perl でもマッチしないはずなのかもしれませんけれどね。 > ええ,で,Perlが一貫してああなってるのには理由がありそうな気 > がしてならないのです.杞憂? なのか、あるいは Perl の実装が man perlre と異なっている点からすると見 落としなのか... -- 青山 和光 Wakou Aoyama