Kolorowanie tekstu w kontrolce RichTextBox pomiędzy dwoma cudzysłowami

0

Witam, mam pewien problem z edycją koloru w kontrolce RichTextbox.
Chciałbym aby w zawartości RichTextboxa kolorował się tekst pomiędzy dwoma cudzysłowami (włącznie z nimi).
Nie wrzucałem tego postu do działu poświęconemu C#, ponieważ wydaję mi się, że to banalne do rozwiązania, ale stanowi to dla mnie problem.Wie ktoś z was jak to zrobić ?

Cudzysłowy mam zapisane w następującej formie:

 public Regex Quote = new Regex("" + (Char)34);
3
Regex r = new Regex("\".*?\"");
Match m = r.Match(richTextBox1.Text);
int start = richTextBox1.SelectionStart;
if (m.Success)
{
    richTextBox1.Select(m.Index, m.Length);
    richTextBox1.SelectionColor = Color.Red;
    richTextBox1.SelectionStart = start;
    richTextBox1.SelectionColor = Color.Black;
} 

Cos takiego?
Jak chcesz pomalować wszystkie to zrób z MatchCollection i pętla, ja robiłem dla testu dla jednego.

0

@some_ONE Wielkie Dzięki!
Mam tylko jeszcze takie drobne pytanie: Mianowicie co oznacza ten zapis wewnątrz Regexa ("".*?"")?
Szczerze mówiąc to w życiu bym się nie domyślił, że taki argument konstruktora tego obiektu musiał być D:

1

\" zaznacza cudzysłów.
.* zaznacza dowolny znak zero lub więcej razy, dodanie do tego na końcu ? powoduje, że jest to wyrażenie niezachłanne, czyli że jak napotka w tekście znak cudzysłowu to kończy zaznaczanie. Bez ? byłoby to wyrażenie zachłanne, czyli zaznaczało by wszystko od pierwszego do ostatniego cudzysłowu.

Dla przykładu popatrz na taki tekst "AAAAAA" BBBBBBB "CCCCCCC".
Wyrażenie zachłanne(bez ?) zaznacza w tym wypadku wszystko od pierwszego do ostatniego cudzysłowu, bo . też zaznacza cudzysłów.
Natomiast wyrażenie niezachłanne zaznaczy sekwencje "AAAAAA" oraz "CCCCCCC".

PS. Nie wiem jak się poprawnie odmienia wyraz "cudzyłów" :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1