Para ello, tendrá que utilizar esta expresión regular:
foo/bar/.+?\.(?!jar).+
Explicación
Usted está diciendo que lo que debe hacer caso omiso, por lo que esta expresión es la búsqueda de cosas que Don 't quiero.
- Se busca cualquier archivo cuyo nombre (incluyendo directorio relativo) incluye (foo/bar /)
- A continuación, busca los caracteres que preceden a un punto (. +? \. == partido de uno o más caracteres de cualquier momento hasta llegar al carácter de período)
- A continuación, asegúrese de que no tiene el final "jar" (?! jar) (Esto se conoce como una mirada negativa
- Finalmente toma el final tiene (. +)
Regular express Los iones son fáciles de estropear, por lo que le sugiero encarecidamente que obtenga una herramienta como Regex Buddy para ayudarlo a construirlos. Desglosará una expresión regular en inglés sencillo, lo que realmente ayuda.
EDITAR
Hey Jason S, Me has pillado, lo hace perder esos archivos.
Esta expresión regular corregido funcionará para todos los ejemplos se enumeran a continuación:
foo/bar/(?!.*\.jar$).+
Se encuentra:
- foo/bar/baz.txt
- foo/bar/baz
- foo/bar/jar
- foo/bar/baz.jar.txt
- foo/bar/ba z.jar.
- foo/bar/baz.
- foo/bar/baz.txt.
pero no encuentra
Nueva Explicación
Esto dice buscar archivos en "foo/bar /", entonces no coinciden si hay cero o más caracteres seguidos de ".jar" y luego no hay más caracteres ($ significa el final de la línea), entonces, si ese no es el caso, haga coincidir los siguientes caracteres.
whee! gracias, ahora voy a intentarlo. –
hmm, buena idea, pero no funcionará como se indica, ya que no coincidirá con los archivos sin ninguna extensión. Pero creo que puedo transformarlo en lo que necesito. La parte 'foo/bar /' es fácil, así que olvidémonos de eso por el momento. Si puede solucionarlo, haga coincidir los archivos "baz.txt", "baz", "jar", "baz.jar.txt", "baz.jar.", "Baz." Y "baz.txt". " pero NO "baz.jar" entonces acepto. :-) –
Hola Jason, entiendo a qué te refieres. Acabo de actualizar mi respuesta con una expresión regular de trabajo. Lo probé contra cada cadena que enumeró. –