
VB.NETなのですが、
htmlソースを変数に入れて、その中からURLを抽出して、
1つずつ保存していくという動作をさせたいのですが、
どうしてもURLを一つずつ取得することができません。
Dim r As Regex
Dim m As Match
Dim JpgFile As String
r = New Regex("http://.+\.jpg")
m = r.Match(html)
If m.Success = False Then
Else
JpgFile = m.Value
ここで1つずつ保存
End If
現在、ここまで出来たのですが、
これだと、変数html内に複数のjpgのURLがあると
最初のURLの1文字目から、最後のURLの末尾までを一度に
取得してしまいます。
URLの文字列はhttp://で始まっていて、終わりは・・・.jpg"
になっていたり、"がなかったりします。
>で閉じる前に同じタグ内にWidthなどサイズを指定している場合もあります。
また、上記のようにタグ内に書かれていなくて、クリッカブルリンクになっていないURLの場合もありそれも取得したいです。
一つずつ取得する方法や一度に配列に読み込む方法などがありましたら、
ご教示頂けると助かります。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
> URLの文字列はhttp://で始まっていて、終わりは・・・.jpg"
この条件だけ満たすなら、
New Regex("http://.+\.jpg")
正規表現の繰り返し指定(*とか+など)はできるだけ長いマッチを
とろうとします。このため、.+ が複数のURLを食ってしまっている
というわけです。
#085 正規表現の落とし穴
http://www.ne.jp/asahi/futohen/sankaku/h085.htm
今回の場合とりあえず正規表現を "http://.+?\.jpg" にすればいいです。
量指定子
http://msdn2.microsoft.com/ja-jp/library/3206d37 …
htmlテキスト丸ごと与えて、その中からすべて取り出したいのなら
Regex.Matchesメソッドを使えば一発でできます。
一つずつ処理するならイテレータを、一度に配列に取り出したいのなら
CopyToメソッドを使えばいいでしょう。
Regex.Matches メソッド (String) (System.Text.RegularExpressions)
http://msdn2.microsoft.com/ja-jp/library/e7sf90t …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
配列のメソッド
-
final修飾子を使っているのに、...
-
mainメソッドのthrows節で設定...
-
ウィンドウを最前面にできません
-
javascriptからjavaを呼び出したい
-
ListViewにて行追加
-
0歳児の指しゃぶりに関して
-
FEM解析の読み方は?
-
C#のスタートアップオブジェク...
-
CALLされていないメソッドを見...
-
入出力について
-
Application.Wait の参照設定
-
Range クラスのAutoFitプロパテ...
-
vbaエクセルマクロ RemoveDupli...
-
メソッドをstaticにする、しな...
-
VBAでSaveAs使用し、指定してい...
-
昇進者です。 戻り値の学習を...
-
VB.NETで色を比較するIF文を...
-
boolean型のフィールドとゲッタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
0歳児の指しゃぶりに関して
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
CALLされていないメソッドを見...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
Application.Wait の参照設定
-
C#.net Define文
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA でExcelを終了したい...
おすすめ情報