我有一个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;
}
答案 0 :(得分:2)
以下是Foo1
的最终正则表达式:
[\=][\s]Foo1[\s][\{](^\})*[\}]
以下是QRegExp
理解的内容:
所以这是你应该告诉它的:
=\s*Foo1\s*{[^}]+}
以及它会理解的内容:
}
。否则,正则表达式不适合处理这种情况。如果在您的上下文中发生这种情况,则应该依赖解析器而不是正则表达式。