【发布时间】:2015-03-27 16:35:03
【问题描述】:
取自 Qt Syntax Highlighter 示例:
//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
如您所见,结果是:引号内包括双 / 将是灰色的。但是“”之外的字符变成了darkGray,它应该是默认字体颜色(通常是黑色)。如何调整单行注释的正则表达式,使其知道绿色“//”不受暗灰色突出显示规则的约束?
我尝试为单行注释规则添加这个:
rule.pattern.setMinimal(true);
还是不行。我也试过了:
rule.pattern = QRegExp("//[^\n]*\"*");
【问题讨论】:
-
我也试过 rule.pattern = QRegExp("//([^\n]*)| (?!\")");
标签: c++ regex qt syntax-highlighting qt5.3