まつもと ゆきひろです.
In message "[ruby-list:1208] Re: ruby 0.99.3-961204"
on 96/12/08, Shin-ichiro Hara <sinara / blade.nagaokaut.ac.jp> writes:
|
|原です。
|ここでも "\n-A" の様な表現は - による展開はしてくれません。
うーん.そうですね.考えてみましょう.
|> sオプションとかは悩ましいですねえ.
|
|これは . で \n を排除するのを止めるだけでは?中身を知らずに
|物を言ってますが。(^^;
いや,regexp.cの中身を変更するとまたややこしいバグを生みそう
で恐いというだけのことです.多分,やれば簡単なんでしょうけど
ね.
|なるほどこれでもいいですね。大域変数を使うのがちょっと気
|になるけど。$~ って大域変数ですよね?そういえば $~ という
|のはのぞいてみたことがありませんでした。これの正体は何で
|しょう。謎めいてますね。
$~と$_だけは実はローカル変数です.特別扱いですから謎は多いで
しょうね.
|String#grep が行単位でなくなるということは、each が行単位なの
|で、grep が each から Enumerable モジュールで直接派生したもの
|でなくなりますね。いいのかな。
やっぱり良くないですね.結局,scanというメソッドを用意しまし
た.scanというのはscanfからの連想です.
String#scan(re)
p "abc".scan(/(.).(.)/)
=> ["a", "c"]
"abc123ABC".scan(/(.).(.)/) { |a| p a}
=> ["a", "c"]
["1", "3"]
["A", "C"]
という感じになります.
|試しに上の grep_ch を作ってみたんですが、やはり
|
|"abc".grep_ch(/(.)/) { |x| print $1, "\n" }
|
|としても $1 が有効にならないのでいまいちでした。
そうですね.この場合は多分,grep_chで正規表現によるマッチを
行っていせいだと思うのですが,たとえマッチを行っていても変数
$~はローカル変数ですから値を持ち出せませんね.今の仕様は良く
ないのかなあ.
|#ところで、今
|#"abc" =~ /./; print $~, "\n"
|#をしたら Segmentation fault を起こしました。(^^;
すみません.バグです.
まつもと ゆきひろ /:|)