正規表現にて・・・
投稿者 葉月  ()
投稿日時
2008/9/9 13:41:00
簡単なサンプルコードを書きました。
ボタンとリッチテキストボックスを用意してください。
>>>サンプルコード
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim regex As Regex = New Regex("<.+?>") '*1
Dim matches As MatchCollection = regex.Matches(Me.RichTextBox1.Text)
For Each match As Match In matches
Me.RichTextBox1.Select(match.Index, match.Length)
Me.RichTextBox1.SelectionColor = Color.Red
Next
Me.RichTextBox1.Select(0, 0)
End Sub
End Class
>>>説明
*1
.+?は、特殊記号を含めた文字が何文字でもOKとなります。
.*と書くこともできます。
他に不明点がありましたらレスに書いてください。
ボタンとリッチテキストボックスを用意してください。
>>>サンプルコード
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim regex As Regex = New Regex("<.+?>") '*1
Dim matches As MatchCollection = regex.Matches(Me.RichTextBox1.Text)
For Each match As Match In matches
Me.RichTextBox1.Select(match.Index, match.Length)
Me.RichTextBox1.SelectionColor = Color.Red
Next
Me.RichTextBox1.Select(0, 0)
End Sub
End Class
>>>説明
*1
.+?は、特殊記号を含めた文字が何文字でもOKとなります。
.*と書くこともできます。
他に不明点がありましたらレスに書いてください。
投稿者 モリオ  ()
投稿日時
2008/9/10 00:27:00
>>2
葉月さん、レスありがとうございます。
このまえ Regex を使った時にエラーがでたので困っていたのですが、やっと解決しました。
本当にありがとうございました。
あとは自分で少しずつでも理解していこうと思ってます。
葉月さん、レスありがとうございます。
このまえ Regex を使った時にエラーがでたので困っていたのですが、やっと解決しました。
本当にありがとうございました。
あとは自分で少しずつでも理解していこうと思ってます。
投稿者 モリオ  ()
投稿日時
2008/9/10 00:53:00
>>2
先ほど解決したと申しましたが、
少し不具合がありました。
<a>
あかさたな
</a>
たとえばこのように(HTML的には間違っていますが)
したとします。
そうすると、"<"から">"まででなく、
「あかさたな」まで赤色になってしまいます。
">"から"<"と認識しているのでしょうか、できないのです。
どうすれば直るのでしょうか?
よろしくお願いします。
先ほど解決したと申しましたが、
少し不具合がありました。
<a>
あかさたな
</a>
たとえばこのように(HTML的には間違っていますが)
したとします。
そうすると、"<"から">"まででなく、
「あかさたな」まで赤色になってしまいます。
">"から"<"と認識しているのでしょうか、できないのです。
どうすれば直るのでしょうか?
よろしくお願いします。
投稿者 葉月  ()
投稿日時
2008/9/10 04:21:00
>>4
一度、ボタンを押してから再度タグを記述したと想定します。
そのままだと、文字の色を引き継いだままになるので文字は赤色のままになってしまいます。
正規表現の問題ではありません。
ボタンを一度押して文字を書き込んだら、文字色を黒く戻す処理が必要になります。
以下のコードを追加してください。
>>>追加するコード
Private Sub RichTextBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.SelectionChanged
Me.RichTextBox1.SelectionColor = Color.Black
End Sub
一度、ボタンを押してから再度タグを記述したと想定します。
そのままだと、文字の色を引き継いだままになるので文字は赤色のままになってしまいます。
正規表現の問題ではありません。
ボタンを一度押して文字を書き込んだら、文字色を黒く戻す処理が必要になります。
以下のコードを追加してください。
>>>追加するコード
Private Sub RichTextBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.SelectionChanged
Me.RichTextBox1.SelectionColor = Color.Black
End Sub
投稿者 モリオ  ()
投稿日時
2008/9/10 04:56:00
>>5
葉月さん、ありがとうございました。
やっと出来ました。
じっくりとコードの意味を解読して以降と思います。
本当にありがとうございました。
葉月さん、ありがとうございました。
やっと出来ました。
じっくりとコードの意味を解読して以降と思います。
本当にありがとうございました。
よくHTMLの編集ツールなどで、<html>や<p>などのタグの色が変化するものがあります。
VBのコードの場面でも似たことがありますが、
それと同じように、
例えば
"<"と">"に挟まれた文字の色を赤にする、というようなことはできるのでしょうか。どうやるのでしょうか?
もちろんこのカッコ→"<"">"も含めて赤したいのです。
またはあらかじめ"<"と">"の間に入るhtml,p,aなどのタグをひとつずつ確認していくか・・・ということも考えています。
しかし、単にラベルの文字でやるのではなくて、
テキストボックスの中の文字の色を変えたい(ユーザーが入力しているときにリアルタイムで、もしくはボタンを押して変えたい)
のですが、できるのでしょうか?
たぶん正規表現を使うのではないかと思うのですが、いまいち良くわかりません。
できれば詳しい解説とサンプルをよろしくおねがいします。
とても押し付けるような形でもうしわけございませんが、
ぜひよろしくおねがいします。