取自Qt语法荧光笔示例:
//single line comment rule
singleLineCommentFormat.setForeground(Qt::darkGray);
rule.pattern = QRegExp("//[^\n]*");
rule.format = singleLineCommentFormat;
highlightingRules.append(rule);
//string rule
quotationFormat.setForeground(Qt::darkGreen);
rule.pattern = QRegExp("\".*\"");
rule.pattern.setMinimal(true);
rule.format = quotationFormat;
highlightingRules.append(rule);
问题在于你有这样的事情:
"inside is darkGreen//"outside is darkGray
正如您所看到的,结果是:引号内部将是灰色的,包括double /。但是外面的人物""变成darkGray,它应该是默认的字体颜色(通常为黑色)。如何调整RegExp的单行评论,以便它知道绿色" //"是否免除了darkGray突出显示规则?
我尝试将这个添加到单行评论规则中:
rule.pattern.setMinimal(true);
仍然没有工作。我也试过了:
rule.pattern = QRegExp("//[^\n]*\"*");
答案 0 :(得分:0)
/(\"(?:(?!\/\/).)+?\")/
使用非捕获组的魔力和负面展望,我设计了以下内容:
quotationFormat.setForeground(Qt::darkGreen);
rule.pattern = QRegExp("\"(?:(?!\\/\\/).)+\"");//QRegExp("\".*\"");
rule.pattern.setMinimal(true);
rule.format = quotationFormat;
highlightingRules.append(rule);
魔术应用,你得到了你正在寻找的行为。
参考文献:
https://stackoverflow.com/a/977294/999943
并在此示例中进行了测试:
http://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html
希望有所帮助。