正则表达式匹配两个字符串之间的所有字符,包括尾部

时间:2019-01-27 13:33:25

标签: regex regex-group

我想在表达式中搜索所有编译标志,例如:

-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,以便每个标志都在其自己的组中。 我已经到了:

(?<= -)(.*?)(?= \-)

我在this question的答案中找到了

,它找到除了最后一个标志之外的所有内容,因为它要求每个组后面都带有一个“-”。 我还如何掌握最后一个标志?

在我接受答案后进行编辑:

是否可以在组中包含“-”?

此外,如果该模式包含要编译的.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

的所有组

1 个答案:

答案 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

Demo

http://www.midnightmassmusic.com