アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBで正規表現

下記のような文字列がTextBoxに入力されています。
<a></a>で囲まれた部分の抽出は出来ましたが、
<td></td>タグで囲まれた’18’も取り出したいのですが正規表現ではどの様に記述すれば宜しいでしょうか?

関係有りそうなコードはこれです。
Regex("<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>"

----------------------------------------
<TR bgcolor=#ffffff>
<TD> 18 </TD>
<TD><a href="main.py?qtype=userpage&teamnum=162&username=KOTOKO"> KOTOKO </a> </TD>
<TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=K … target="_blank"> 11379753 </a> </TD>
<TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=K … target="_blank"> 16190 </a> </TD>
</TR>

----------------------------------------

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?qtyp …
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

一例になれば。
    • good
    • 0

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?qtyp …
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

補足日時:2013/03/16 17:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!