投稿者 Regex  (高校生) 投稿日時 2012/2/21 17:54:47
初めて投稿します。

今VBでhtmlのエディタを作成しているのですが、RichTextboxでタグの色を変えるときに正規表現を使用しています。

そこで、ある程度の色付けは実装できるのですが、タグの中まで詳細に色付けすることが今の能力ではできません。

たとえば <input type="checkbox" checked="true" id="test"> とやった時に、「type=」、「checked=」、「id=」 を取り出して赤に色付けし、「"」から「"」までの範囲を緑で色づけしたいときはどのような正規表現を用いるとできますか?

今のところある程度の色付けに関しては


'カラーテーブルを削除するコード 
        Dim s As String, ss As String
        Dim t1 As Integer, t2 As Integer
        s = RithTextBox1.Rtf
        t1 = s.IndexOf("{\colortbl")
        If t1 > 0 Then
            t2 = s.IndexOf("}", t1)             'カラーテーブルが有った場合{の次の}を探す  
            ss = s.Substring(t1, t2 - t1 + 1)   '{から}までを切り出す 
            s = s.Replace(ss, "")               '{から}の文字を空白に置き換える 
        End If

        '\cf0:黒 \cf1:タグ内の色(青) \cf2:「<」と「>」(赤) \cf3:コメントタグの色(緑) 

        s = Replace(s, "\viewkind""{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;\red0\green150\blue0;}" & vbCrLf & "\viewkind")
        s = Regex.Replace(s, "<(.*?)>""\cf2<\cf1$1\cf2>\cf0", RegexOptions.IgnoreCase)
        s = Regex.Replace(s, "<\\cf1!(.*?)\\cf2>""\cf3<!$1>\cf0", RegexOptions.IgnoreCase)
        RithTextBox1.Rtf = s


のような感じで、Rtfプロパティをいじって色を付けています。

このプログラムは http://www.geocities.jp/hatanero/richtext.html を参考に作っています。

正規表現とRtfに詳しい方、回答お願いします。