- ベストアンサー
タグを正規表現で完全に削除
こんばんわ~ときどきこちら様でお世話になってます タグ(Java ScriptやHTML中のCSS等きわめて複雑なものも含む)を完全に削除してウェブサイトの文字だけを抜き出したいんですけど自分にはハードルが高すぎたみたいです^^; http://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag いろいろ調べているうちにこちらのサイト様を発見し、 $none_tag =~ s/$tag_regex//; とやってみましたがなぜかタグが残ってしまいます。 とあるサイトの【文字】だけを抜き出せれば良いのでタイトルに正規表現と記載しましたがその他の方法でも構いませんのでよろしくお願いしますm(_ _)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
参考URLのページは参考になりませんかね。 全テキストの例は出てませんが。
その他の回答 (3)
- kapran
- ベストアンサー率18% (2/11)
> その他の方法でも構いませんので・・・ http://www.vector.co.jp/soft/win95/net/se065646.html など如何でしょうか。
補足
すみませんが方法は正規表現のみでお願いします http://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag のようにHTMLの正規表現を変数に代入して $none_tag =~ s/$tag_regex//ig; のようにしたいです また↑のページではなんで複雑なタグを削除できないんでしょうか? ページに複雑なJavaScriptがあったりするとうまく削除できなくてJavaScriptの一部が残ってしまいます わがままばかり言ってしまいましたが再度よろしくお願いします
- SE-1
- ベストアンサー率57% (26/45)
こんなんどうでしょう。 use Win32::OLE qw(EVENTS); my $URL = "http://www.yahoo.co.jp"; my $IE = Win32::OLE->new("InternetExplorer.Application") || die "Could not start Internet Explorer.Application\n"; Win32::OLE->WithEvents($IE,\&Event,"DWebBrowserEvents2"); $IE->{visible} = 0; $IE->Navigate($URL); Win32::OLE->MessageLoop(); sub Event { my ($Obj,$Event,@Args) = @_; if ($Event eq "DocumentComplete") { $IEObject = shift @Args; my $innerText = $IEObject->Document->Body->InnerText; print $innerText; Win32::OLE->QuitMessageLoop(); } }
- Ethersky
- ベストアンサー率71% (168/235)
gオプション付けましょう。 $none_tag =~ s/$tag_regex//g; gオプションは「マッチするもの全てを見つける」ためのオプションです。 ということは、これがないと1回でも見つかったらそれで終わりということになります。
補足
ご回答ありがとうございます やりたいことは同じなんですけど後でソースコードをみたときに どんな処理をしてるかわかりやすそうなのですみませんが正規表現で問題を解決したいです