Regex选择除带有特定前缀的文件外的所有.c文件

Regex选择除带有特定前缀的文件外的所有.c文件,regex,makefile,Regex,Makefile,我有一个真正简单的正则表达式问题。我正在制作一个makefile,需要一个目标来编译目录中的所有源代码,除了一个或两个命名前缀为ttem_endian_port的文件。我可以使用什么正则表达式使这尽可能简单 我在想类似[^ttem\u endian\u port*]*.c的东西,但这似乎不起作用 ^[^(ttem_endian_port)]*.c 第一个“^”表示“字符串的开头” 然后,您需要将ttem_endian_port括起来,使regexp引擎明白您想用^ 您真的需要正则表达式吗ma

我有一个真正简单的正则表达式问题。我正在制作一个makefile,需要一个目标来编译目录中的所有源代码,除了一个或两个命名前缀为ttem_endian_port的文件。我可以使用什么正则表达式使这尽可能简单

我在想类似[^ttem\u endian\u port*]*.c的东西,但这似乎不起作用

^[^(ttem_endian_port)]*.c
  • 第一个“^”表示“字符串的开头”
  • 然后,您需要将ttem_endian_port括起来,使regexp引擎明白您想用^

    • 您真的需要正则表达式吗
      make
      的内置函数也可以做到这一点

      ALL_SRCS := $(wildcard *.c) SRCS := $(filter-out ttem_endian_port%.c, $(ALL_SRCS)) 所有_SRCS:=$(通配符*.c) SRCS:=$(过滤掉ttem\U endian\U端口%.c,$(所有SRC))
      未使Regexp执行否定搜索。如果您真的想使用regexp,您可以做一个前瞻(并非所有引擎都支持它):

      另外,不要忘了避开圆点。 有关更多信息,请参阅

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