1

我有一个QPlainTextEdit并想使用其中选择特定文本QRegExp

这是文本块的示例:

Block1 = Foo1 {
     bla bla bla;
     bla bla bla;
}

我需要选择从=直到}给定子字符串Foo1

这是我的代码:

QString name = "Foo1";
QString pattern = "[\\=][\\s]" + name + "[\\s][\\{](^\\})*[\\}]";
//pattern = "[\=][\s]Foo1[\s][\{](^\})*[\}]"

这些行供选择:

this->moveCursor(QTextCursor::Start);
this->document()->find(QRegExp(pattern));

奇怪的是,这个选择只是Foo1没有

= Foo1 {
     bla bla bla;
     bla bla bla;
}
4

1 回答 1

2

问题

这是您的最终正则表达式Foo1

[\=][\s]Foo1[\s][\{](^\})*[\}]


这就是QRegExp理解:

正则表达式可视化

解决方案

所以你应该告诉它:

=\s*Foo1\s*{[^}]+}

它会理解什么:

正则表达式可视化

还有更多...

  • 在解决方案中,我承认}代码中不会出现 no 。否则,正则表达式不太适合处理这种情况。如果这发生在您的上下文中,您应该依赖解析器而不是正则表达式。
  • 使用Debuggex可视化您的正则表达式。
于 2013-11-13T11:24:15.867 回答