2011-04-16 21 views
12

Tengo lo que debería ser una pregunta real simple de expresiones regulares. Estoy creando un archivo MAKE y necesito un objetivo para compilar toda la fuente en mi directorio, excepto uno o dos archivos que tienen un prefijo nombrado de ttem_endian_port. ¿Qué expresiones regulares puedo usar para hacer esto tan simple como sea posible?Regex para seleccionar todos los archivos .c, excepto los que tienen un cierto prefijo

Estaba pensando algo así como [^ ttem_endian_port *] *. C pero eso no parece funcionar. 'comienzo de cadena'

Respuesta

16

¿Usted realmente necesita una expresión regular? Las funciones integradas de make pueden hacer esto también.

 
ALL_SRCS := $(wildcard *.c) 
SRCS  := $(filter-out ttem_endian_port%.c, $(ALL_SRCS)) 
2
^[^(ttem_endian_port)]*.c 
  • ^Los primeros medios.
  • Entonces, es necesario poner entre paréntesis ttem_endian_port para hacer que el motor de expresiones regulares comprender que desea para anular todo el plazo con su^
2

Regexp no fueron hechos para hacer una negativo búsqueda. Si realmente desea utilizar expresiones regulares, se puede hacer una búsqueda hacia delante (no todos los motores de lo apoyan):

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

Además, no se olvide de de escape el punto. Mire this question para más información.

Cuestiones relacionadas