LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Questo topic è stato chiuso dal moderatore Buon gfirono a tutti...Sto creando un programma che mi permette di programmare in C/C++(è solo un piccolo Editor di Sorgenti, il compilatore è esterno) ma adeso ho un problema sto utilizzando la guida di Totem sulla SyntaxHighlight, ho preso qualche spunto qua e la ma ora vorrei sapere come posso utilizzare le Regex per colorare le parole chiavi cioè se ad esempio l'utente scrive '#include' il rpogramma deve colorarmi di blu(ad esempio) la stringa '#include' e quindi dovrei controllare se è stato scritto #include con le regex etc...come posso fare???
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Beh, la regex per #include è... "#include"
Se, invece, vuoi indicare "#include", ma seguito da almeno uno spazio è "#include\s+".
Oppure, se vuoi indicare "#include" seguito da almeno uno spazio e posto all'inizio della linea è "^#include\s+".
O ancora, "#include" seguito da almeno uno spazio e preceduto da zero o più spazi, ma che inizino dall'inizio della riga è: "^\s*#include\s+".
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Funzione Matches: restituisce tutte le occorrenze della regex. C'è scritto nel capitolo sulle regex.
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Grazie mille Totem ho fatto...Questo è il codice:
Codice sorgente - presumibilmente VB.NET |
Dim RegexBlue As New Regex("(#include|#define|etc.)") Dim MatchsBlue As MatchCollection = RegexBlue.Matches(Me.Text) For Each MBlue As Match In MatchsBlue If MBlue.Success Then Me.SelectionStart = MBlue.Index Me.SelectionLength = MBlue.Length Me.SelectionColor = Color.Green Me.DeselectAll() End If Next
|
Ma adesso ho un'altro problema ad esempio se io voglio scrivere un commento nel mio codice(in c++) faccio così:
'/* commento */' e lui mi colora '/*' e '*/', fin qui tutto ok ma si presenta il problema che lui mi colora solo ed unicamente le '/*' '*/' e non il loro interno e cioè il commento qui mi rimane una cosa così:
/*(colorato di azzurro) commento(colorato in nero) */(colorato in azzurro), invece io vorrei che fosse tutto colorato di azzurro...
Domanda:
Come posso colorare tutto(cioè anche il commento)?
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Se hai fatto una regex del tipo "(/\*|\*/)" mi sembra ovvio che ti colori solo i delimitatori. Se vuoi comprendere tutto il commento farai "/\*[\w\W]+?\*/" o qualcosa di simile...
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da Il Totem:
Se hai fatto una regex del tipo "(/\*|\*/)" mi sembra ovvio che ti colori solo i delimitatori. Se vuoi comprendere tutto il commento farai "/\*[\w\W]+?\*/" o qualcosa di simile... |
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Altro problema...
Ho provato a leggere la tua(Totem) e un'altra guida (sulle regex) ma non sono riuscito a tirar fuori un bel niente...Comqune veniamo al problema...Quando apro o scrivo sulla richtextbox da me creata il font ad esempio della scritta verifica cambia ma non tutto cioè lui non dovrebbe proprio cambiare ma lui cambia perchè dentro c'è la parola chiave 'if' ma se io voglio cambiare font all'if solo se dopo di se c'è la parentesi tonda? ho già provato, ho tirato fuori qualcosa con questo: 'if\(' ma quando finisco di scrivere la parentesi tonda me la ingrandisce come l'if, invece io vorrei che solo l'if si ingrandisca...poi ad esempio se io scrivo:
Codice sorgente - presumibilmente Plain Text |
<< e << endl; me li colora di verde...come risolvo?
Poi un'altro problema:
se ad esempio io scrivo(una riga sotto):
Codice sorgente - presumibilmente Plain Text |
Poi una riga sopra:
Codice sorgente - presumibilmente Plain Text |
Tutto il codice sotto ed '<< endl;' me lo colora di rosso oppure alcune volte di verde..come risolvo?
Edit:
Il primo problema(quello dell'if) l'ho risolto utilizzando prima dell'if l'escape(adesso non so come si chiama, Totem aiutami tu ) \W cioè: '\Wif'
Aiutatemi negli altri...
2° Edit:
Pure il secondo problema(quello della colorazione in verde del codice) l'ho risolto togliendo dal codice degli '#include' il:
Codice sorgente - presumibilmente Plain Text |
che non so neppure io a cosa servive ...
3° ed utlimo Edit( ):
Risolto pure qst cercando su internet utilizzando qst codice sono riuscito :
Codice sorgente - presumibilmente Plain Text |
Ultima modifica effettuata da LittleHacker il 17/11/2009 alle 21:40 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Umh... vedo che stai combattendo con le regex. Fatti aiutare da Ruggy se lo trovi online. Posso chiudere ora?
|
|