我有一个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;
}发布于 2013-11-13 11:24:15
问题所在
这是您对Foo1的最终正则表达式
[\=][\s]Foo1[\s][\{](^\})*[\}]以下是QRegExp所理解的:

解决方案
以下是你应该告诉它的:
=\s*Foo1\s*{[^}]+}它能理解的是:

还有更多..。
}。否则,regex不适合处理这种情况。如果这种情况发生在上下文中,则应该依赖解析器而不是regexes。https://stackoverflow.com/questions/19934801
复制相似问题