From: Akinori -Aki- MUSHA Date: 2000-08-19T21:02:37+09:00 Subject: [ruby-list:24277] Re: About sub with multilines  こんばんは。 At Sat, 19 Aug 2000 19:54:39 +0900, kiri@pis.toba-cmt.ac.jp wrote: > いろいろ試案した結果 Perl から Ruby へ改宗することを決意しました。で、 > とりあえず手始めに最近作成中の Perl スクリプトを Ruby に変換しています。  すばらしい。 :) > s.sub, s.gsub は基本的には "\n" を区切とする行単位で処理する? > > たとえば s = "abc\n---\ndef\n---" のとき > s.sub!(/^-+\n/,"\n#{$1}") if s =~/^(-+\n)/ の結果は > "abc\n\n---\ndef\n---" になってしまうんですが、これを Perl と同じよ > うに "abc\n---\ndef\n---" にできませんか?  ^ がマッチするのは「文字列全体の先頭」ではなく「行頭」です。 お望みのものは \A でしょう。  Perl だと、$* の真偽や正規表現の s/m モディファイアによって ^ や $ の解釈が 変わるという曖昧さがありますが、 Ruby の正規表現は 明確で、 ^ / $ は「行」の頭と尻、 \A / \Z (\z) は「文字列全体」の 頭と尻にマッチします。 > kiri@kiri:~[1014]% ruby --version > ruby 1.4.4 (2000-04-14) [i386-freebsd5.0]  昨日 ruby-man/ja-ruby-man の ports を追加しましたので、 ご活用ください。 :) -- / /__ __ / ) ) ) ) / Akinori -Aki- MUSHA aka / (_ / ( (__( @ idaemons.org / FreeBSD.org "We're only at home when we're on the run, on the wing, on the fly"