人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VS2005 VBで以下の文字列からから「http://www.ews.com/xx/voa/ish/nnow/NNOW_HEADLINES.xxx」を抜き出して変数にセットしたいのですが、どのようにすればいいでしょうか?
なお、.xxxのみが決めうちで、それからhttpのhまでを切り出したいと思っています。httpやhrefなどのhtmlはどは検索する文字内にたくさんありますのではやり.xxxを検索、それからhまでを切り出すことになります。

xxx.................................
<a href="http://www.ews.com/xxx/vba/lish/now/NNOW_HEADLINES.xxx"
..................................xxxxxx

●質問者: mai_mai_mail
●カテゴリ:コンピュータ インターネット
✍キーワード:href HTML HTTP VB それから
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● HALSPECIAL
●35ポイント

こちらでいかがでしょうか

Imports System.Text.RegularExpressions

Dim strData = "<html>---------xxxxxxxxxxxx---------</html>"
Dim pattern As String = "<a href=""(.+?\.xxx)"""
Dim re As Regex = New Regex(pattern, RegexOptions.IgnoreCase Or RegexOptions.Singleline)

Dim m As Match = re.Match(strData)
While m.Success
 Debug.Print(m.Groups(1).Value)
 Exit While
End While

2 ● たまたん
●35ポイント

タグ以外に入っているURIも抽出したいのでしょうか。

それを見込んでするなら、正規表現までするようなものではないと考えますので、

URIの始まるところから終わるところまでをとるということでしたら

「://」〜「.xxx」を抽出し、「://」の前は、「 」(スペース)「"」で

区切られた後までのところを出すといいのでは?

以下、ソースはこちら、

Imports System
Imports System.Net
Imports System.IO
Imports System.Text

Public Class Form1

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim strArray() As String
 Dim strTemp As String
 strArray = getURL(TextBox1.Text)

 Debug.Print("------------------------")
 For Each strTemp In strArray
 Debug.Print(strTemp)
 Next
 End Sub

 Public Function getURL(ByVal strURL As String) As String()
 Dim retText As String = ""
 Dim delimiter As String = "://"
 Dim delimiter2 As String = ".css"
 Dim strTemp As String = ""
 Dim strTemp2 As String = ""

 Dim cnt, cnt2 As Integer
 Dim parts, parts2 As String()

 Dim targetString As String = getURLStream(strURL)

  '://で分けて配列化する。
 parts = Split(targetString, delimiter, -1, CompareMethod.Binary)

 For cnt = 1 To parts.Length - 1
  '.cssで分けて配列化する。
 parts2 = Split(parts(cnt), delimiter2, -1, CompareMethod.Binary)
  '.css以降がデータがあれば、「.css」が存在するということになる
 If parts2.Length > 1 Then
 strTemp = parts(cnt - 1)

  '://より前の文字列を調べる
 For cnt2 = strTemp.Length - 1 To 0 Step -1
 strTemp2 = strTemp.Substring(cnt2, 1)
 If strTemp2 = " " Or strTemp2 = """" Or strTemp2 = " " Then
  'スペースや”が入っていたところから://までのところを抽出し結合
 retText = retText & strTemp.Substring(cnt2 + 1, strTemp.Length - cnt2 - 1) & "://" & parts2(0) & delimiter2 & vbCr
 Exit For
 End If
 Next
 End If
 Next

 Return retText.Split(vbCr)

 End Function

  'URLを文字列として拾ってくる
 Private Function getURLStream(ByVal strURL As String) As String
 Dim ret As String = ""
 Dim myUri As New Uri(strURL)
 Dim myHttpWebRequest As HttpWebRequest = WebRequest.Create(myUri)
 Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse()
 If (myHttpWebResponse.StatusCode = HttpStatusCode.OK) Then
 Dim receiveStream As Stream = myHttpWebResponse.GetResponseStream()
 Dim readStream As New StreamReader(receiveStream, Encoding.GetEncoding("shift-jis"))
 ret = readStream.ReadToEnd()
 readStream.Close()
 myHttpWebResponse.Close()
 End If

 Return ret
 End Function
End Class

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ