我想在表达式中搜索所有编译标志,例如:
-Xaa=2000 -tbb:simple -Xcc-dds -g -c -DC_hh -Xii-ff-file -Xmm-nn -Xkk -o output/gg.o -ee1481 -Xll=0x1000 -I. -I./ss/tt/uu -I./ss/tt/ww -I./EIS_CFG/gentool/make -I./testenv
使用rexex,以便每个标志都在其自己的组中。 我已经到了:
(?<= -)(.*?)(?= \-)
,它找到除了最后一个标志之外的所有内容,因为它要求每个组后面都带有一个“-”。 我还如何掌握最后一个标志?
在我接受答案后进行编辑:
是否可以在组中包含“-”?
此外,如果该模式包含要编译的.c / .cpp文件,是否可以将其删除?
例如:
-Xaa=2000 -tbb:simple -Xcc-dds -g -c -DC_hh -Xii-ff-file -Xmm-nn -Xkk -o output/gg.o -ee1481 -Xll=0x1000 -I. ./ff/gg/vv.c -I./ss/tt/uu -I./ss/tt/ww -I./EIS_CFG/gentool/make -I./testenv
获取没有./ff/gg/vv.c
答案 0 :(得分:0)
尝试以下模式:
(?<= |^)(-\S+)(?= |$)
此模式表示:
(?<= |^) assert that what precedes is either a space OR
what precedes is the very start of the string
(-\S+) then match and capture everything non whitespace character until
(?= |$) what follows is another space OR
what follows is the end of the string