文字列を置き換える場合に、やりたいことがあります。
$htmlの中に、 aaaあいうえおbbb というデータがあり、それを aaaかきくけこbbb に直したい場合、
$html =~ s/aaa.*bbb/aaaかきくけこbbb/;
でいけたので問題ないのですが、 aaaあいうえおbbb の中に改行が入っている場合、
aaaあい
うえおbbb
だとうまくいきません。何か、ほかに方法があるのでしょうか?
よければ教えてください。また、ほかに効率のよいやり方がある場合は押してください。
ちなみに あいうえお は、その場その場で文章が長くなったり短くなったりします。
$html =~ s/aaa.*bbb/aaaかきくけこbbb/s;
このように最後に s を付けてやれば改行にもマッチするようになり、うまくいくと思います。
perl なら
$html =~ s/aaa.*bbb/aaaかきくけこbbb/s;
のように末尾にsオプションをつければいけると思います。
sオプションをつけることにより、 「.」 が改行にもマッチするようになります。
ありがとうございます!
もっと、勉強しなければいけませんね、、、。sをつけるだけでよかっただなんて、、、。
ありがとうございました!
言語が分からないけど、Perl だと仮定する。
$html =~ s/aaa.*bbb/aaaかきくけこbbb/m;
http://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html
m
文字列を複数行として取り扱います。
#!/usr/bin/perl $html = <<_HTML_; aaaあい うえおbbb _HTML_ $html =~ s/(aaa).*(bbb)/\1かきくけこ\2/s; print $html; これでいかがでしょうか マッチした前後の文字列を置換後にそのまま流用する形です ※下記環境で動作確認済みです 文字コード:SJIS 改行コード:LF Perlのバージョン:v5.8.5
なるほど!!!
わかりました!!!!
ありがとうございます!助かりました。