投稿者 パル36  (中学生) 投稿日時 2011/1/22 22:13:30
こんばんわ。この掲示板の過去ログをみてもなかったので質問させていただきます。

今、WebBrowserで取得したソース(WebBrowser.Document.Body.OuterHtml)から画像のURLを抜き出したいと思っています。
しかし、あるサイトの正規表現を編集して使用しても反応がありません。


Public Sub GetImg()
Dim Soruce As String = WebBrowser.Document.Body.OuterHtml
Dim search As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(Soruce, "<img\s+[^>]*src\s*=\s*(?:(?<quot>[""'])(?<url>.*?)\k<quot>|" + "(?<url>[^\s>]+))[^>]*>(?<text>.*?)</img>", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.Singleline)

For Each m As System.Text.RegularExpressions.Match In search 
Console.WriteLine("URL:{0}", m.Groups("url").Value)
Next
End Sub

参考サイトは、http://dobon.net/vb/dotnet/string/regexmatch.htmlです。

リンクタグとイメージタグは全然違うことは承知しています。だけど、いままで正規表現だけは学習していないためかとても頭に入りません。(難しいと感じてしまいます。)

画像タグに対応させるにはどのようにしたらよいのでしょうか。
取得したいのは、URLの部分だけでその他の属性などは必要ではありません。
このような場合は、そこだけを抽出すればいいのですか。それとも、いったん全て抽出してそれから調べるのですか。

サンプルや助言を書いてくださるとうれしいです。手順だけどもかまいません。
今回は正規表現の部分を質問しているのですが、これを作っているときにWebBrowserのデスクトラクタをしたんですが、なぜかできませんでした。


Dim wc As WebBrowser = New WebBrowser
Dim Soruce As String = wc.Document.Body.OuterHtml
(省略)
wc.Dispose()

「オブジェクト参照がオブジェクト インスタンスに設定されていません。」

なぜでしょう?そもそもデストラクタの使い方が間違ってるでしょうか。

今日やっと、初級講座を終了できたのでできるかと思いましたができませんでした。
どうか二つについて宜しくお願いします。