Подтвердить что ты не робот

Regex для выбора всех файлов .c, кроме тех, у которых есть определенный префикс

У меня есть вопрос, который должен быть реальным простым регулярным выражением. Я делаю make файл и нуждаюсь в одной цели для компиляции всего источника в моем каталоге, кроме одного или двух файлов с именованным префиксом ttem_endian_port. Какое регулярное выражение можно использовать, чтобы сделать это максимально простым?

Я думал что-то вроде [^ ttem_endian_port *] *. c, но это не работает.

4b9b3361

Ответ 1

Вам действительно нужно регулярное выражение? make встроенные функции также могут сделать это.

ALL_SRCS := $(wildcard *.c)
SRCS     := $(filter-out ttem_endian_port%.c, $(ALL_SRCS))

Ответ 2

^[^(ttem_endian_port)]*.c
  • Первый символ ^ означает начало строки.
  • Затем вам нужно заключить в скобки ttem_endian_port, чтобы заставить двигатель regexp понять, что вы хотите свести на нет весь термин с помощью <^ li >

Ответ 3

Regexp не было сделано для проведения отрицательного поиска. Если вы действительно хотите использовать regexp, вы можете сделать lookahead (не все его поддерживают):

^(?!ttem_endian_port).*\.c$

Кроме того, не забудьте вывести точку. Посмотрите этот вопрос для получения дополнительной информации.