У меня есть строка компиляции, которую я пытаюсь проанализировать, все, что я пытаюсь получить, это полное имя файла с расширением из строки компиляции, но строка компиляции может содержать другое расширение файла, например '. c 'или' .asm 'или'. cpp 'и, конечно, порядок параметров может быть другим. Например:
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -c file1.c -o file1.o
или
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -c file1.asm -o file1.o
или
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -c file1.asm.c -o file1.asm.o
или
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -o file1.o -c file1.c
или
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -o file1.asm.o -c file1.asm.c
или
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -c -o file1.asm.o file1.asm.c
Имена файлов иногда заключаются в "например:
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -c "file1.c" -o "file1.o"
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -c "file1.asm" -o file1.o"
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -c "file1.asm.c" -o "file1.asm.o"
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -o "file1.o" -c "file1.c"
gcc -DDEF_SOMETHING -g3 -Iinclude -Wall -o "file1.asm.o" -c "file1.asm.c"
Я пробовал следующее регулярное выражение в python3:
r'(?:\")?(\S+(?:\.cpp|\.cxx|\.cc|\.c|\.asm|\.s))(?:\")?'
и
r'(?:\")?(\S+(?:\.cpp|\.cxx|\.cc|\.c|\.asm|\.s)+)(?:\")?'
но я получаю неправильные результаты, например, для последнего полученного случая: file1.asm