Dans l’un de mes cas de test, je souhaite copier un fichier JAR particulier d’un composant d’un emplacement à un autre. Par exemple, lorsque le répertoire cible contient uniquement les fichiers JAR suivants
org.test.custom.search-4.2.2-SNAPSHOT-.jar
org.test.custom.search-4.2.2- tests -SNAPSHOT.jar
Je veux copier le org.test.custom.search-4.2.2-SNAPSHOT-.jar. Où version de ce pot peut être changé à tout moment. Je peux donc utiliser l’expression régulière à cette fin, comme mentionné ici [1]. Mais je veux savoir comment omettre l’autre jar dans regex. c’est-à-dire vouloir omettre le fichier jar qui a la chaîne ” tests ” dans son nom.
1. Regex pour les fichiers dans un répertoire
Vous pouvez utiliser indexOf
au lieu de regex
pour vérifier si le nom du fichier contenant le mot “tests” ressemble à ceci:
if(fileName.indexOf("tests") >= 0) { // do what you want }
Mise à jour: indexOf()
sera beaucoup plus rapide qu’une regex
, et est probablement aussi plus facile à comprendre.
La solution basée sur les regex
serait:
if (fileName.matches(".*tests.*")) { //do something } else { //do something else }
Correspond au SNAPSHOT exactement avec n’importe quel numéro de version, en ignorant tous les autres (y compris les tests-SNAPSHOT):
org\.test\.custom\.search-\d+\.\d+\.\d+-SNAPSHOT-\.jar
Une expression rationnelle correspondant au pot principal mais pas au pot de test pourrait être:
\w+-[\d.]+-(?!tests-).*\.jar
Il a un correcteur négatif pour la chaîne “tests-“. Notez que vous devrez échapper aux barres obliques inverses lorsque vous mettez cette expression rationnelle dans une chaîne.