dポイントプレゼントキャンペーン実施中!

VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。
正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。
タグごと抽出する方法でも構わないので教えてください。

例えば
<a href="www.yahoo.com△">○○○</a>   ・・・<1>
※△は(www.yahoo.com)+(半角数字1文字)
※○○○は1文字以上の全角文字

このようなパターンの文字列(<1>を丸ごと)を抜き出すには
どのような正規表現を書けばよいでしょうか?
単に<a href ではじまって </a>  で終わる文字列であれば
<a href.*</a>
で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので
ぜひ実現させたいと思っています。宜しくお願いします。

A 回答 (2件)

 正規表現による抽出にこだわらないでしたら、


>例えば
の答えは、[Links プロパティ] により、 下記のような方法で
>タグごと抽出する
こともできますし、
>もう少し範囲を絞れば目的の文字列だけを抽出
することもできます。

Sub test()
 Dim objIE As Object
 Dim i As Long
 Set objIE = CreateObject("InternetExplorer.Application")
 With objIE
  .navigate "http://www.yahoo.com/"
  While .Busy Or .ReadyState <> 4: DoEvents: Wend
  With .Document
   For i = 0 To .Links.Length - 1
    Cells(i + 1, 1) = .Links(i).outerHTML
    Cells(i + 1, 2) = .Links(i).outerText
   Next
  End With
 End With
 objIE.Quit
 Set objIE = Nothing
End Sub
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
抜き出せればよいので正規表現でなくてもOKです。
別の角度からの回答で大変参考になりました。
正規表現はおろかVBAも初心者ですので学ぶことが多いです。

お礼日時:2010/05/24 22:12

Sub try()


Dim myReg As Object
Dim st As String
Dim match As Object
Dim matches As Object

Set myReg = CreateObject("VBScript.Regexp")
myReg.Pattern = "<[^<]+</\w+>"
myReg.Global = True

st = "<a href=""△△△"">●●●</a> <div ~=""△△△"">□□□</div>"

Set match = myReg.Execute(st)
myReg.Pattern = ">(.+)<"

For Each matches In match
MsgBox matches.Value & vbCrLf & myReg.Execute(matches.Value)(0).Submatches(0)
Next

Set myReg = Nothing
Set match = Nothing
End Sub

参考にはならなかったのかな?
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
教えていただいたことを参考に試行錯誤してみたいと思います。

お礼日時:2010/05/24 22:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています