2010-08-11 6 views
0

J'ai des problèmes pour créer une expression régulière qui vérifie si un fichier a l'extension .TMP de sorte que le modèle doit accepter toute chaîne qui n'est pas égale à (az 0-9 ou événement dots) .TMPExpression régulière: correspond à tout sauf * .TMP

Pour être clair: le matcher ne doit être réussi que lorsque le fichier n'a pas l'extension TMP.

J'ai trouvé que allready je dois utiliser (?! Expression) pour le "non" ...

(?!.*TMP]) // is wrong ;-) 
+2

Pourquoi ne pas correspondre '.TMP' et faire des choses quand il est * pas * adapté? – kennytm

+0

Avez-vous besoin d'une expression régulière, ou avez-vous juste besoin de faire correspondre des fichiers qui ont une extension tmp? – Jeff

+0

Le code doit être configuré avec spring, et je voulais garder toutes mes options ouvertes en utilisant regEx. Il doit être possible d'accepter les fichiers qui commencent par blabla iso en regardant tous les fichiers qui ne se terminent pas par .TMP dans une autre implémentation si nécessaire. –

Répondre

5
"(?<!\\.TMP)\\Z" 

Lire: autre chose que ".TMP" suivi d'ici la fin de la chaîne.

+0

"Quand tout ce que vous avez est une expression rationnelle, chaque problème ressemble à du bruit de ligne" - moi;) – msw

+1

@msw: La question explicitement posée pour une expression rationnelle. Je ne pense pas qu'il soit juste de baisser le ton pour avoir répondu à la question posée. – sepp2k

+0

D'accord. Ce n'était pas pour "punir" l'affiche mais pour déplacer la réponse vers le bas de la pile (ce qui est arrivé naturellement donc downvote enlevé). En effet, la question demandait une regexp, mais parfois la question est fausse. Je ne m'attends pas à ce que vous soyez nécessairement d'accord avec cette position, mais j'espère que vous pouvez le comprendre. – msw

2

Ce n'est pas une réponse à votre question, mais je pense que vous devriez regarder Apache Common IO qui a un tas de méthodes simples qui peuvent faire tout ce que vous faites communément. Y compris trouver des extensions. Ensuite, vous faites simplement une instruction if au lieu d'une reg. exp.

http://commons.apache.org/io/

et voir le doc java spécifique pour getExtension: getExtension JavaDoc

10
if (!filename.endsWith(".TMP")) { 
    /* then we found a match without using regExp */ 
} 
+2

+1 d'accord, trop trivial un problème auquel appliquer des expressions régulières. –

+1

+1 mais sous OS X ou Windows, vous pouvez convertir le nom de fichier en majuscules avant de faire la comparaison (systèmes de fichiers insensibles à la casse). – JeremyP

Questions connexes