2013-07-02 3 views
0

Я ищу делать:QRegExp соответствие

  1. Найти все файлы, которые относятся к типу autogen_X.c, autogen_X.h или Project name.c (в папке Src на корневом уровне)
  2. Распечатайте их

QRegExp у меня есть: \ NSRC [^ \ п] *

текст, который у меня есть:

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

Вы должны препроцессировать файл, он будет упростить задачу много:

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

(\ в конце строки означает СЦЕПИТЬ со следующей строкой).

Затем вы можете записать, что хотите, с помощью регулярного выражения (src/[^ ]*). Обратите внимание на скобки, чтобы захватить текст.

Кроме того, это регулярное выражение будет захватывать src/adc.c в lib/src/adc.c. Чтобы исправить это, вы можете использовать регулярное выражение, которое исключает определенные символы от «src», например: ([^a-zA-Z_0-9/]src/[^ ]*).

Обратите внимание: оно не может совпадать с именами файлов с пробелами в нем. Кстати, в обычном файле qmake имена с пробелами помещаются между кавычками. Вы не можете правильно анализировать кавычки только с помощью регулярных выражений.