重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは!

CGIで悩んでいます。
$tmp = aaa>bbb<BR>aaa>ccc<BR>ddd>bbb<BR>ade>ber<BR>
という文字列を
$tmp = aaa>ccc<BR>ddd>bbb<BR>ade>ber<BR>

つまり先頭から<BR>までを一回だけ消去したいのですが、やり方がわかりません
ためしに
$tmp =~ s/.*<BR>//o;
とやってみましたがすべて消えてしまいます

これができるなら$tmp =~ s/.*<BR>//o;の方式でなくてもいいです

どなたかご教授お願いします

A 回答 (1件)

正規表現の量指定子のデフォルトは最長マッチなので、


最短マッチで行う場合は量指定子に"?"を加えます。

use strict;
my $tmp = 'aaa>bbb<BR>aaa>ccc<BR>ddd>bbb<BR>ade>ber<BR>';
$tmp =~ s/.*?<BR>//io;
print map { s/</&lt;/g; "$_\n" } $tmp;

参考URL:http://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!