首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QRegexp匹配

QRegexp匹配
EN

Stack Overflow用户
提问于 2013-07-02 13:52:29
回答 1查看 210关注 0票数 0

我想要做的事:

  1. 查找所有类型为autogen_X.c、autogen_X.h或Projectname.c的文件(在根级的src文件夹中)
  2. 打印出来

我拥有的QRegExp是:nsrc^\n*

我拥有的文本是:

代码语言:javascript
复制
####################################################################    
# Files                                                            #
####################################################################

C_SRC +=  \
src/autogen_init.c \
src/autogen_init.h \
src/Project name.c \
lib/src/acmp.c \
lib/src/adc.c \
lib/src/aes.c \`


s_SRC +=  \
Device/Source/G++/startup_32.s


S_SRC += 

我有的代码

代码语言:javascript
复制
  QRegExp linkRx = QRegExp("src/[^\\n]*");
  linkRx.indexIn(content);

  foreach (QString match, linkRx.capturedTexts())
  {
    qDebug() << match;
  }

我得到的输出

代码语言:javascript
复制
"src/autogen_init.c \" 

如果这不匹配所有以src/开头的文件

EN

回答 1

Stack Overflow用户

发布于 2013-07-02 14:11:43

您应该对文件进行预处理,它将大大简化任务:

代码语言:javascript
复制
text.replace("\\\n", " ");

(行尾的\表示与下一行连接)。

然后,您可以使用regexp (src/[^ ]*)捕获所需的内容。注意括号,以便捕获文本。

此外,这个regexp将捕获src/adc.c中的lib/src/adc.c。要解决这个问题,可以使用regexp将某些字符排除在"src“之前,例如:([^a-zA-Z_0-9/]src/[^ ]*)

注意,它不能将文件名与其中的空格相匹配。顺便说一句,在普通的qmake文件中,带有空格的名称放在引号之间。您不能仅用regexp正确地解析引号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17427433

复制
相关文章

相似问题

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