RSSフィード生成時titleに含まれるHTMLタグ部分を除去したい

RSSフィードの各アイテムのtitleとして取得してきた文字列にHTMLタグが含まれていて、タグが表示されると読みにくいので、HTMLタグ部分自体を除去してしまうことにした。

$article =~ s/<br>|<a.*">|<\/a>|<img.*[0-9]>//g;

しかし、この正規表現だとリンクのHTMLタグが二回以上ある場合、間の文字列が全て除去されてしまう。

泥臭く文字列分割してやるしかないのかな。


追記

とりあえず泥臭くやった結果が以下。対象文字列に「%」が含まれていないという前提ですが。

$article =~ s/</<%/g;
my @tmp_array = split( /<|>/, $article );
foreach my $tmp ( @tmp_array ) {
    unless( $tmp =~ /^%/ ) { $result = $result.$tmp; }
}


さらに追記

mixiで質問投げてみたら、マイミクの方に教えていただけた。

$article =~ s/<br\s*\/?\s*>|<a.+?>|<\/\s*a>|<img.+?>//g;

なるほど、つながってしまうのは「.*」特有なので、「.*」を使わないで書けばよいのか。
Perl正規表現で「*」や「+」は原則、最長パターンにマッチしてしまうので、最短パターンでマッチさせたい場合は「*」「+」のあとに「?」をつけてやる。


あと、/とaの間のスペースも考慮しないとダメよと暗黙に教えていただいた。。

というか、HTMLタグ部分自体全てを除去するのであれば

$article =~ s/<.+?>//g;

これでもよいのですね。


うーん、まだまだだなぁ。