正規表現について教えて下さい。

タグの編集
投稿者 太一  (社会人) 投稿日時 2011/11/16 07:19:40
正規表現で文字検索をしているのですが、何故かスルーされてしまいます。

どこが間違っているのか教えてもらえないでしょうか?



タグ
<span class="date">2011-11-10</span>




Dim strString As String = str1
If strString.IndexOf("span\sclass=""date""") <> -1 Then

  
  retIndex = str1.IndexOf("span\sclass=""date""")    
     TextBox.Text = str1.Substring(retIndex + 17, 11)

  MessageBox.Show("ok")

End If


もしくは


Dim strString As String = str1
If strString.IndexOf("span class=""date""") <> -1 Then

 retIndex = str1.IndexOf("span class=""date""")   
  TextBox.Text = str1.Substring(retIndex + 17, 11)

   MessageBox.Show("ok")

End If



VB2005です。
投稿者 shu  (社会人) 投稿日時 2011/11/16 07:48:03
> strString.IndexOf("span\sclass=""date""") 
これは正規表現ではなく指定した文字列そのものでの検索になるので
\sを半角スペースにすればいいです。

正規表現を使うなら

Imports System.Text.RegularExpressions

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim m = Regex.Match(TextBox1.Text, "<span class=""date"">(?<date>.*?)</span>")
        If m.Success Then
            TextBox2.Text = m.Groups("date").Value
        End If
    End Sub

のような感じです。

正規表現を以下のようにするとspan以外のタグでも使用出来ます。
"<(?<tag>.*?) class=""date"">(?<date>.*?)</\k<tag>>"
投稿者 太一  (社会人) 投稿日時 2011/11/16 12:50:22
shuさん返信有難う御座います。

お陰様で正規表現上手く出来ました。
また応用も有難うございました。

実はそれも知りたかった一つでした。