0

我想要做什么:

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

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

我的文字是:

####################################################################    
# 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 += 

我有的代码

  QRegExp linkRx = QRegExp("src/[^\\n]*");
  linkRx.indexIn(content);

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

我得到的输出

"src/autogen_init.c \" 

这不应该与所有以 just 开头的文件匹配src/吗?

4

1 回答 1

0

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

text.replace("\\\n", " ");

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

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

此外,此正则表达式将捕获src/adc.clib/src/adc.c. 要解决这个问题,您可以使用一个正则表达式,它将某些字符排除在“src”之前,例如:([^a-zA-Z_0-9/]src/[^ ]*).

请注意,它不能匹配带有空格的文件名。顺便说一句,在普通的 qmake 文件中,带有空格的名称放在引号之间。您不能仅使用正则表达式正确解析引号。

于 2013-07-02T14:11:43.000 回答