Regex Совпадение всех символов между двумя строками, включая хвост - PullRequest
0 голосов
/ 27 января 2019

Я хотел бы найти все флаги компиляции в выражении, таком как:

-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

1 Ответ

0 голосов
/ 27 января 2019

Попробуйте этот шаблон:

(?<= |^)(-\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

Демо

...