
VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。
正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。
タグごと抽出する方法でも構わないので教えてください。
例えば
<a href="www.yahoo.com△">○○○</a> ・・・<1>
※△は(www.yahoo.com)+(半角数字1文字)
※○○○は1文字以上の全角文字
このようなパターンの文字列(<1>を丸ごと)を抜き出すには
どのような正規表現を書けばよいでしょうか?
単に<a href ではじまって </a> で終わる文字列であれば
<a href.*</a>
で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので
ぜひ実現させたいと思っています。宜しくお願いします。
No.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
回答ありがとうございます。
抜き出せればよいので正規表現でなくてもOKです。
別の角度からの回答で大変参考になりました。
正規表現はおろかVBAも初心者ですので学ぶことが多いです。
No.1
- 回答日時:
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
参考にはならなかったのかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「半角数字」と「+」を許可する...
-
preg_matchと定数について
-
正規表現パターンの記入方法に...
-
eval
-
正規表現の書き方について
-
正規表現
-
正規表現で記号 & アンドの検索...
-
文字列中の任意の数字を換算
-
正規表現で特定のHTMLタグのク...
-
PHPで似たコードを繰り返す場合...
-
正規表現で…
-
URLを抽出する正規表現
-
カンマ区切りの金額を検索する...
-
preg_replace_callback が渡す...
-
PHPで<a>タグ内からURLと文字を...
-
preg_match : マッチした位置の...
-
phpでhtmlソースを解析し、文字...
-
正規表現で文字列の抜き出し
-
正規表現で「0」のみ抽出
-
Smartyを使用した、テンプレー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで変数から1行目だけを取得...
-
VBAを使ってHTMLソースから特定...
-
、"(ダブルクォーテーション)...
-
PHPで<a>タグ内からURLと文字を...
-
preg_matchでエラーが出ます。
-
電話番号のチェック ハイフン...
-
正規表現でシングルクォーテー...
-
正規表現で「0」のみ抽出
-
Smartyで部分一致
-
正規表現で、半角大文字と半角...
-
C#でのワイルドカードを使った...
-
正規表現パターンの記入方法に...
-
Excelで数字のみを2倍3倍にする...
-
Smartyを使用した、テンプレー...
-
PHPメールフォーム URLと半角...
-
preg_matchの正規表現で
-
文字列から数値だけ取得するに...
-
「半角数字」と「+」を許可する...
-
php 正規表現で(ただし○○は除...
-
正規表現での改行数を求めるに...
おすすめ情報