- ベストアンサー
VBで正規表現で<td></td>タグで囲まれた'18'を抽出する方法は?
- VBで正規表現を使って、<td></td>タグで囲まれた'18'を抽出する方法を教えてください。
- 質問者は<a></a>で囲まれた部分の抽出はできたが、<td></td>タグで囲まれた'18'も取り出したいとのこと。
- 関連するコードはRegex("<a href=""(?<url>.*?)"".*?>>"(?<text>.*?)</a>"となっています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 KOTOKOが見つかればいいのかはわからなかったので、 取り合えず全部を抜き出すもの。 Imports System.Text.RegularExpressions ' 正規表現 Public Class Form1 Dim url As String Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load url = "http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=162" WebBrowser1.ScriptErrorsSuppressed = True WebBrowser1.Navigate(url) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim re As Regex = New Regex("(?<Rank>\d+)\s+(?<Donor>.+?)\s+(?<Score>\d+?)\s+(?<WU>\d+)\s", RegexOptions.Singleline) Dim st As String = "" Dim ch As Boolean = False For Each tg As HtmlElement In WebBrowser1.Document.GetElementsByTagName("TR") st = tg.InnerText If Not st Is Nothing AndAlso st.StartsWith("1") Then ch = True If ch Then Dim m As Match = re.Match(st) Debug.Print(m.Result("${Rank}") & vbTab & m.Result("${Donor}") & vbTab & m.Result("${Score}") & vbTab & m.Result("${WU}")) End If Next End Sub End Class 一例になれば。
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
Regex("TD>\s(?<no>[^>]+?)</TD|<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>" とか?
補足
試してみましたが上手く動きません。 全コードを書きます。 Public Class Form1 Dim url As String Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load url = "http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=162" WebBrowser1.ScriptErrorsSuppressed = True WebBrowser1.Navigate(url) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Show() Form2.TextBox1.Text = WebBrowser1.Document.Body.OuterHtml Dim a As String Dim s1 As String = Form2.TextBox1.Text Form2.TextBox1.Select(s1.IndexOf("KOTOKO ") - 87, 370) a = Form2.TextBox1.SelectedText 'Dim rr As New System.Text.RegularExpressions.Regex("<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.Singleline) Dim rr As New System.Text.RegularExpressions.Regex("TD>\s(?<no>[^>]+?)</TD|<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.Singleline) 'TextBox1.Text内で正規表現と一致する対象をすべて検索 Dim mcc As System.Text.RegularExpressions.MatchCollection = rr.Matches(a) For Each mm As System.Text.RegularExpressions.Match In mcc '正規表現に一致したグループの文字列を表示 MsgBox("タグ:" + mm.Groups(1).Value + vbCrLf + "タグ内の文字列:" + mm.Groups(2).Value) Next End Sub End Class