• ベストアンサー

テキストから文字列を抜き出すには?(HTMLソース

HTMLが書かれたテキストファイルから <a href="http://-----.com">hogehoge</a>のように書かれたタグから http部及びhogehoge部を抜き出すのに良い方法はないでしょうか? 現在IndexOfを使って"<a"~等で取得していますがタグの書き方によっては <a href="から始まっているとは限らないのでこの辺りも何とかしたいと考えてます。 何かご存知の方いましたらご教授お願いします 環境はVB 2005 Pro を使用しております

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

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

お世話になります。 正規表現を使えばよいと思います。 Dim teststr1 As String = "<a href='http://hgoehoeg/'>abc</a>" Dim teststr2 As String = "<a target='_blank' href='http://hgoehoeg/'>def</a>" Dim teststr3 As String = "<a target='_blank' href='http://hgoehoeg/' >ghi< / a>" Dim reg As System.Text.RegularExpressions.Regex _ = New System.Text.RegularExpressions.Regex("(?<=<a.*?>).*(?=<.*/)") Dim m1 As System.Text.RegularExpressions.Match = reg.Match(teststr1) If m1.Success Then Console.WriteLine(m1.Value) Dim m2 As System.Text.RegularExpressions.Match = reg.Match(teststr2) If m2.Success Then Console.WriteLine(m2.Value) Dim m3 As System.Text.RegularExpressions.Match = reg.Match(teststr3) If m3.Success Then Console.WriteLine(m3.Value)

noname#21987
質問者

お礼

回答ありがとうございます。 やはり柔軟に解析しようとすると正規表現は避けれない道のようですね サンプルソースを参考にさせていただきます。 これは余談ですがVB関係で検索した時に時々見かける なおこ(・∀・)さんだったんですね、困ったときは色々参考にさせていただいてます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

IEオブジェクトに読み込ませて、DOMで取り出すのが簡単かも ---------------------------------------------------------------- Imports System Imports Microsoft.VisualBasic Namespace InternetExplorer Public Class Explorer Public Shared Sub Main() Dim IE As Object = CreateObject("InternetExplorer.Application") IE.Navigate("http://okwave.jp/kotaeru.php3?q=2231283") IE.Visible = False Do while IE.busy Loop Do while IE.Document.readyState <> "complete" Loop Dim x As Object for each x in IE.Document.links Console.WriteLine(x.href & " " & x.innerText) next IE.Quit IE = nothing End Sub End Class End Namespace ---------------------------------------------------------------- コンソールプログラムで書いているので、CreateObjectを使ってますけど、参照設定してイベントの割り付けとかしてやると、Do ~ Loop みたいなブサイクなことをしないでもDocumentCompleteイベントが使えます。

noname#21987
質問者

お礼

回答ありがとうございます。 シンプルに抽出するならこちらを使用した方が簡単に出来ますね 解析対象によって使い分けたいと思います