• ベストアンサー

タグを正規表現で完全に削除

こんばんわ~ときどきこちら様でお世話になってます タグ(Java ScriptやHTML中のCSS等きわめて複雑なものも含む)を完全に削除してウェブサイトの文字だけを抜き出したいんですけど自分にはハードルが高すぎたみたいです^^; http://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag いろいろ調べているうちにこちらのサイト様を発見し、 $none_tag =~ s/$tag_regex//; とやってみましたがなぜかタグが残ってしまいます。 とあるサイトの【文字】だけを抜き出せれば良いのでタイトルに正規表現と記載しましたがその他の方法でも構いませんのでよろしくお願いしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

参考URLのページは参考になりませんかね。 全テキストの例は出てませんが。

参考URL:
http://okwave.jp/kotaeru.php3?q=1911815
gonntetu
質問者

補足

ご回答ありがとうございます やりたいことは同じなんですけど後でソースコードをみたときに どんな処理をしてるかわかりやすそうなのですみませんが正規表現で問題を解決したいです

その他の回答 (3)

  • kapran
  • ベストアンサー率18% (2/11)
回答No.4

> その他の方法でも構いませんので・・・ http://www.vector.co.jp/soft/win95/net/se065646.html など如何でしょうか。

参考URL:
http://www.vector.co.jp/soft/win95/net/se065646.html
gonntetu
質問者

補足

すみませんが方法は正規表現のみでお願いします http://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag のようにHTMLの正規表現を変数に代入して $none_tag =~ s/$tag_regex//ig; のようにしたいです また↑のページではなんで複雑なタグを削除できないんでしょうか? ページに複雑なJavaScriptがあったりするとうまく削除できなくてJavaScriptの一部が残ってしまいます わがままばかり言ってしまいましたが再度よろしくお願いします

  • SE-1
  • ベストアンサー率57% (26/45)
回答No.2

こんなんどうでしょう。 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)
回答No.1

gオプション付けましょう。 $none_tag =~ s/$tag_regex//g; gオプションは「マッチするもの全てを見つける」ためのオプションです。 ということは、これがないと1回でも見つかったらそれで終わりということになります。