人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

正規表現の質問です。

文字列を置き換える場合に、やりたいことがあります。
$htmlの中に、 aaaあいうえおbbb というデータがあり、それを aaaかきくけこbbb に直したい場合、

$html =~ s/aaa.*bbb/aaaかきくけこbbb/;

でいけたので問題ないのですが、 aaaあいうえおbbb の中に改行が入っている場合、

aaaあい
うえおbbb

だとうまくいきません。何か、ほかに方法があるのでしょうか?
よければ教えてください。また、ほかに効率のよいやり方がある場合は押してください。

ちなみに あいうえお は、その場その場で文章が長くなったり短くなったりします。

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:AAA HTML あい あいうえお データ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● ootatmt
●35ポイント

$html =~ s/aaa.*bbb/aaaかきくけこbbb/s;

このように最後に s を付けてやれば改行にもマッチするようになり、うまくいくと思います。

◎質問者からの返答

なるほど!!!

わかりました!!!!

ありがとうございます!助かりました。


2 ● nev
●35ポイント

perl なら

$html =~ s/aaa.*bbb/aaaかきくけこbbb/s;

のように末尾にsオプションをつければいけると思います。

sオプションをつけることにより、 「.」 が改行にもマッチするようになります。

◎質問者からの返答

ありがとうございます!

もっと、勉強しなければいけませんね、、、。sをつけるだけでよかっただなんて、、、。

ありがとうございました!


3 ● b-wind
●10ポイント

言語が分からないけど、Perl だと仮定する。

$html =~ s/aaa.*bbb/aaaかきくけこbbb/m;

http://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html

m

文字列を複数行として取り扱います。


4 ● nc_cls
●10ポイント
#!/usr/bin/perl
$html = <<_HTML_;
aaaあい
うえおbbb
_HTML_

$html =~ s/(aaa).*(bbb)/\1かきくけこ\2/s;
print $html;

これでいかがでしょうか
マッチした前後の文字列を置換後にそのまま流用する形です

※下記環境で動作確認済みです

文字コード:SJIS
改行コード:LF
Perlのバージョン:v5.8.5
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ