• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBで正規表現)

VBで正規表現で<td></td>タグで囲まれた'18'を抽出する方法は?

このQ&Aのポイント
  • VBで正規表現を使って、<td></td>タグで囲まれた'18'を抽出する方法を教えてください。
  • 質問者は<a></a>で囲まれた部分の抽出はできたが、<td></td>タグで囲まれた'18'も取り出したいとのこと。
  • 関連するコードはRegex("<a href=""(?<url>.*?)"".*?>>"(?<text>.*?)</a>"となっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.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)
回答No.1

Regex("TD>\s(?<no>[^>]+?)</TD|<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>" とか?

IrohaKujoh
質問者

補足

試してみましたが上手く動きません。 全コードを書きます。 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

関連するQ&A

専門家に質問してみよう