c++ - QRegExp 编译时警告

标签 c++ qt qregexp

我正在开发一些 Qt 应用程序,其主窗口QPlainTextEdit 子类日志窗口 组成,用于输出事件。我有三种类型的消息:

  1. 信息消息,表示一个以[INFO]子串
  2. 开头的QString
  3. 警告信息,表示一个以[WARNING]子串
  4. 开头的QString
  5. 错误信息,表示一个以[ERROR]子字符串开头的QString

现在,我想用 QSyntaxHighlighter 类实现的是根据消息的类型(INFO 类型 - Qt::DarkBlue 颜色,WARNING 类型 - Qt::DarkYellow 颜色,ERROR 类型 - Qt::DarkRed 颜色) 这是代码块,它应该已经完成​​了任务:

void UeLogWindowTextHighlighter::ueSetupRules()
{
    UeHighlightRule* ueRuleInfo=new UeHighlightRule(this);
    UeHighlightRule* ueRuleWarning=new UeHighlightRule(this);
    UeHighlightRule* ueRuleError=new UeHighlightRule(this);

    this->ueInfoStartExpression()->setPattern("^[INFO].\*");        // FIRST WARNING
    this->ueWarningStartExpression()->setPattern("^[WARNING].\*");  // SECOND WARNING
    this->ueErrorStartExpression()->setPattern("^[ERROR].\*");      // THIRD WARNING

    this->ueInfoExpressionCharFormat()->setForeground(Qt::darkGray);
    this->ueWarningExpressionCharFormat()->setForeground(Qt::darkYellow);
    this->ueErrorExpressionCharFormat()->setForeground(Qt::darkRed);

    ueRuleInfo->ueSetPattern(this->ueInfoStartExpression());
    ueRuleInfo->ueSetTextCharFormat(this->ueInfoExpressionCharFormat());

    this->ueHighlightRules()->append(ueRuleInfo);

    ueRuleWarning->ueSetPattern(this->ueWarningStartExpression());
    ueRuleWarning->ueSetTextCharFormat(this->ueWarningExpressionCharFormat());

    this->ueHighlightRules()->append(ueRuleWarning);

    ueRuleError->ueSetPattern(this->ueErrorStartExpression());
    ueRuleError->ueSetTextCharFormat(this->ueErrorExpressionCharFormat());

    this->ueHighlightRules()->append(ueRuleError);
}   // ueSetupRules

但是,当我编译项目时,我收到以下警告:

../../../gui/uelogwindowtexthighlighter.cpp: In member function 'void UeLogWindowTextHighlighter::ueSetupRules()': ../../../gui/uelogwindowtexthighlighter.cpp:58:47: warning: unknown escape sequence: '\*' [enabled by default]
     this->ueInfoStartExpression()->setPattern("^[INFO].\*");
                                               ^ ../../../gui/uelogwindowtexthighlighter.cpp:59:50: warning: unknown escape sequence: '\*' [enabled by default]
     this->ueWarningStartExpression()->setPattern("^[WARNING].\*");
                                                  ^ ../../../gui/uelogwindowtexthighlighter.cpp:60:48: warning: unknown escape sequence: '\*' [enabled by default]
     this->ueErrorStartExpression()->setPattern("^[ERROR].\*");
                                                ^

因此消息没有着色(这是我的怀疑)。 我的正则表达式有什么问题?我在关注this question and answer on SO .

最佳答案

Star (*) 不必转义。删除 \ 或者如果你需要 \ 它应该被转义并且 write double \ (\\)。

关于c++ - QRegExp 编译时警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121421/

相关文章:

c++ - 构造函数右括号处的无法访问的代码

c++ - Windows,C++ : two connections on one server socket?

windows - 如何为我的应用程序设置 Windows 10 通知首选项

c++ - 在 qtextedit 中高亮显示 x 和 y 作为位置的单词

c++ - Qt 和正则表达式

c++ - 使用 QRegExp 解析 header

c++ - 是否总是会有一个与您构建的 .dll 关联的 .lib(导入库)?

python - 如何将 Python 双端队列转换为 C++ 容器?

c++ - 为什么Qt代码中的QChar是传值而不是const引用?

c++ - 如何替换字符串中的 QRegExp?