我想做什么:
我所拥有的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/
开头的所有文件都匹配?
答案 0 :(得分:0)
你应该预处理文件,它会简化任务:
text.replace("\\\n", " ");
(一行末尾的\
表示与下一行连接)。
然后,您可以使用正则表达式(src/[^ ]*)
捕获所需内容。请注意括号,以便捕获文本。
此外,此正则表达式将捕获src/adc.c
中的lib/src/adc.c
。要解决此问题,您可以使用正则表达式排除某些字符在“src”之前,例如:([^a-zA-Z_0-9/]src/[^ ]*)
。
请注意,它无法匹配带有空格的文件名。顺便说一句,在普通的qmake文件中,带有空格的名称放在引号之间。您无法仅使用regexp正确解析引号。