正規表現について教えて下さい。 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 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>>"
これは正規表現ではなく指定した文字列そのものでの検索になるので
\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 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です。
どこが間違っているのか教えてもらえないでしょうか?
タグ
<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です。
お陰様で正規表現上手く出来ました。
また応用も有難うございました。
実はそれも知りたかった一つでした。