1 :
デフォルトの名無しさん:
文字コードの関係もあって失敗ばかりして困ってます。
HTML、XML文
↓
タグ除去
↓
プレーンテキスト
みたいなプログラムありませんか? どうかおながいします。
単発質問に見えるが。
間違いなく単発質問だ。
回線切って首<以下略/>
</commnet>
6 :
デフォルトの名無しさん:02/05/22 22:32
すみません、まだ駆け出しの初心者なんで、、、
前に作った拙いプログラム張りますからちょっと待ってください。
初心者なら何でもして良いと?
s/<[^>]*>//g;
これだとタグが完全に取れないのですが・・・
while ($_ = <STDIN>) {
$_ =~ s/<[^>]*>//g;
print $_;
}
s/<[^>]*>/g
warata
なあ、ブラウザで、すべて選択してコピーすればタグ取れるぜ。
やってみろよ。
電
波
を
受
信
し
ま
す
た
うんこ
int c;
while((c=getchar()) != EOF)
if(c == '<') while((c=getchar()) != '>');
else putchar(c);
≪
≫
≪
≫
(゜ρ゜)
強い電波が出ています
天地爆裂
電波炸裂
なぜ上げる?
>>19 ここ数日板の攪拌をしてる人がいるみたい。
すぐ落ちるし気にしなくていいんでない。
22 :
デフォルトの名無しさん:02/07/03 02:01
>>9 は複数行に跨ったタグを除去できない、ってだけの話だね。
つうか、きちんと動作するプログラム作りたいんだったら、
正規表現をLexerプログラムに翻訳しなおして、
微妙な境界条件や、エラー・リカバリをきちんと書くのが正道
つーか、HTML::Parser 使おう。
お前なんであげんの?
# $str の中のタグを削除した $result を作る
# $tag_regex と $tag_regex_ は別途参照
$text_regex = q{[^<]*};
$result = '';
while ($str =~ /($text_regex)($tag_regex)?/gso) {
last if $1 eq '' and $2 eq '';
$result .= $1;
$tag_tmp = $2;
if ($tag_tmp =~ /^<(XMP|PLAINTEXT|SCRIPT)(?![0-9A-Za-z])/i) {
$str =~ /(.*?)(?:<\/$1(?![0-9A-Za-z])$tag_regex_|$)/gsi;
($text_tmp = $1) =~ s/</</g;
$text_tmp =~ s/>/>/g;
$result .= $text_tmp;
}
}
# Perlメモからのコピペ。よって
#
# 〜 糸冬 了 〜
27 :
デフォルトの名無しさん:02/09/21 13:13
つーか、HTML::Parser 使おう。
>>25 expatの間違いだよな?
ちなみにHTML::Parserはw3cのlibwwwのパーサ(C)をベースに改良したものだ。
テキスト文
ストリング文字列
キャラクター文字
サウンド音
イメージ画像