正则表达式选择除具有特定前缀的所有.c文件

时间:2011-04-16 16:00:54

标签: regex makefile

我应该是一个真正简单的正则表达式问题。我正在创建一个makefile,需要一个目标来编译我的目录中的所有源,除了一个或两个名为ttem_endian_port前缀的文件。我可以用什么正则表达式来尽可能简单?

我在考虑像[^ ttem_endian_port *] * .c这样的东西,但这似乎不起作用。

3 个答案:

答案 0 :(得分:16)

你真的需要正则表达式吗? make的内置函数也可以这样做。

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

答案 1 :(得分:2)

^[^(ttem_endian_port)]*.c
  • 第一个^表示'字符串的开头'。
  • 然后,你需要使用ttem_endian_port括号来让regexp引擎明白你要用你的^
  • 来否定整个术语

答案 2 :(得分:2)

Regexp没有进行否定搜索。如果您真的想使用正则表达式,可以使前瞻(并非所有引擎都支持它):

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

另外,不要忘记逃避点。 请查看this question以获取更多信息。