文字列から、リンクを抜出す。


たなか  2012-02-13 23:53:21  No: 103221

この度は、おおおお.com( http://www.biccamera.com )を
ご利用いただきまして、誠にありがとうございます。

----(お得な情報)----------------------------------------------------
*携帯からでもお買い物!モバイルサイト  ビックカメラ.com
*モバイルサイトでしか買えないお買い得品も随時掲載!
http://www.biccamera.com/bicbic/jsp/w/pocketbic/index.jsp?odml=1001
今私たちにできること  〜〜節電アイテム集めました〜〜
http://www.biccamera.com/bicbic/jsp/w/special/powersave/index.jsp?odml=2102

例えば、上記にお文字列が、変数に入っているとします。

その中から、ホームページのリンクを抜き出したいです。
どうすれば、良いでしょうか?

最後がhtmlとか固定なら考えれるのですが数字などだとどうしていいか・・・


VBレスキュー(花ちゃん)  URL  2012-02-14 03:46:19  No: 103222

どこに表示してあるかで違った方法もありますが、単なる文字列中からなら
下記を試して見て下さい。
Private Sub Command1_Click()
   Dim myString As String
   myString = "この度は、おおおお.com( http://www.biccamera.com )を" & vbCrLf
   myString = myString & "ご利用いただきまして、誠にありがとうございます。"
   myString = myString & "*携帯からでもお買い物!モバイルサイト  ビックカメラ.com" & vbCrLf
   myString = myString & "*モバイルサイトでしか買えないお買い得品も随時掲載!" & vbCrLf
   myString = myString & "(http://www.biccamera.com/bicbic/jsp/w/pocketbic/index.jsp?odml=1001)" & vbCrLf
   myString = myString & "今私たちにできること  〜〜節電アイテム集めました〜〜" & vbCrLf
   myString = myString & "(http://www.biccamera.com/bicbic/jsp/w/special/powersave/index.jsp?odml=2102)" & vbCrLf
   myString = myString & "おまけで、http://www.hanatyan.sakura.ne.jp/patio/patio.cgi"
   Dim Reg As New RegExp
   Dim MCs As MatchCollection
   Dim Mat As Match
   Reg.Global = True
   Reg.Pattern = "(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)"
   '検索して結果を取得
   Set MCs = Reg.Execute(myString)
   With Text1
      Debug.Print MCs.Count            '見つかった個数
      For Each Mat In MCs
         Debug.Print Mat.FirstIndex    '見つかった位置
         Debug.Print Mat.Value         '見つかった文字列
      Next
      .SelStart = 0
   End With
End Sub


VBレスキュー(花ちゃん)  2012-02-14 03:54:16  No: 103223

下記の部分消し忘れていました。修正願います。
他にもバグがあるかも?。

'   With Text1
      Debug.Print MCs.Count            '見つかった個数
      For Each Mat In MCs
         Debug.Print Mat.FirstIndex    '見つかった位置
         Debug.Print Mat.Value         '見つかった文字列
      Next
'      .SelStart = 0
'   End With


魔界の仮面弁士  2012-02-14 04:29:28  No: 103224

正規表現を使った抽出手順で良ければ、VBA, VBScript, C#, Perl 等々、
探してみると幾つか見つかりました。どこまで対応するかにもよりますけれども。

http://oshiete.goo.ne.jp/qa/5661746.html
http://www.ipentec.com/document/document.aspx?page=regularexpression-url-detect&culture=ja-jp
http://d.hatena.ne.jp/sutara_lumpur/20100827/1282872312

以下、URL の切り出しに悩みそうな例文。

----- 丸括弧を含む URL -----
ActiveX 版 WebBrowser の仕様は、下記に記述があります。
(http://msdn.microsoft.com/en-us/library/ie/aa752127(v=vs.85).aspx)

----- 漢字やカナを含む URL -----
今ではhttp://東京駅.jp/といった日本語を含むURLもありえます

----- 長いURLが改行されている ---
今私たちにできること  〜〜節電アイテム集めました〜〜
http://www.biccamera.com/bicbic/jsp/w/special/powersave/index
.jsp?odml=2102)

----- URL の先頭にhttpスキーマが省略されている ---
ここで検索してください→support.microsoft.com

----- URL の一部に"http://"を含んでいる ---
http://web.archive.org/web/20110723045415/http://www.biccamera.com/


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加