void highlightBock(const QString& text)
{
for (const HighlightingRule& rule : m_highlightingRules)
{
QRegularExpressionMatchIterator it = rule.pattern.globalMatch(text);
while (it.hasNext())
{
const QRegularExpressionMatch match = it.next();
setFormat(match.capturedStart(), match.capturedLength(), rule.format);
}
}
}
Avec comme regex pour les commentaires : #[^\n]*
Et pour les chaines de caractères : "[^"]*"
L'exemple est buggé vu que la coloration ne fonctionne pas avec des consommations de token mais des regex. Du coup en fonction de l'ordre des règles, on a l'un ou l'autre des bugs :
J'ai résolu cette étape en prenant les matchs dans l'ordre d'apparition sur la ligne, peu importe la règle. Mais il me reste le cas suivant :
"Utilise le #Perdu " quand ton code ne marche plus # To be fixed
Ici si on oublie les guillemets, on a un 2e commentaire dans le 1er qui commence à #Perdu. Mais comme il ne s'applique pas à cause des guillemets, il faut colorer le 2e. Seulement le global match ne le trouve pas. Ici le soucis ne vient pas de la coloration mais du match des regex. Est-il possible de récupérer les nested match avec cette classe ?
Merci !
EDIT : On m'a donné la regex suivante qui fonctionne.
(?=(#.*))
- Edité par Maluna34 9 avril 2019 à 19:37:11
Matchs imbriqués avec QRegularExpression
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.