首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QRegExp未按预期工作

QRegExp未按预期工作
EN

Stack Overflow用户
提问于 2013-11-12 16:38:17
回答 1查看 944关注 0票数 1

我有一个QPlainTextEdit,希望使用QRegExp在其中选择特定的文本。

以下是文本块的示例:

代码语言:javascript
复制
Block1 = Foo1 {
     bla bla bla;
     bla bla bla;
}

我需要从=开始选择,直到}给出子字符串Foo1

这是我的代码:

代码语言:javascript
复制
QString name = "Foo1";
QString pattern = "[\\=][\\s]" + name + "[\\s][\\{](^\\})*[\\}]";
//pattern = "[\=][\s]Foo1[\s][\{](^\})*[\}]"

以下是供选择的线条:

代码语言:javascript
复制
this->moveCursor(QTextCursor::Start);
this->document()->find(QRegExp(pattern));

奇怪的是,这只选择了Foo1而不是

代码语言:javascript
复制
= Foo1 {
     bla bla bla;
     bla bla bla;
}
EN

回答 1

Stack Overflow用户

发布于 2013-11-13 11:24:15

问题所在

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

代码语言:javascript
复制
[\=][\s]Foo1[\s][\{](^\})*[\}]

以下是QRegExp所理解的:

解决方案

以下是你应该告诉它的:

代码语言:javascript
复制
=\s*Foo1\s*{[^}]+}

它能理解的是:

还有更多..。

  • 在解决方案中,我承认代码中不能出现任何}。否则,regex不适合处理这种情况。如果这种情况发生在上下文中,则应该依赖解析器而不是regexes。
  • 使用德布盖克斯可视化正则表达式。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19934801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档