【发布时间】:2020-04-22 10:19:37
【问题描述】:
我有一个我试图解析的编译行,我想要得到的只是完整的文件名和编译行的扩展名,但是编译行可以包含不同的文件扩展名,比如“.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)+)(?:\")?'
但我得到了错误的结果 例如,对于我得到的最后一种情况: 文件1.asm
【问题讨论】:
-
你想要的是this吗?
标签: regex python-3.x parsing compilation file-extension