我想要做的事:
我拥有的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 \" 如果这不匹配所有以src/开头的文件
发布于 2013-07-02 14:11:43
您应该对文件进行预处理,它将大大简化任务:
text.replace("\\\n", " ");(行尾的\表示与下一行连接)。
然后,您可以使用regexp (src/[^ ]*)捕获所需的内容。注意括号,以便捕获文本。
此外,这个regexp将捕获src/adc.c中的lib/src/adc.c。要解决这个问题,可以使用regexp将某些字符排除在"src“之前,例如:([^a-zA-Z_0-9/]src/[^ ]*)。
注意,它不能将文件名与其中的空格相匹配。顺便说一句,在普通的qmake文件中,带有空格的名称放在引号之间。您不能仅用regexp正确地解析引号。
https://stackoverflow.com/questions/17427433
复制相似问题