J'utilisais un modèle regex pour décomposer le chemin de contexte pour une servlet.Regex ne décompresse pas correctement le chemin du fichier avec un numéro de version
/{1,2}([^/{1,2}]+)
Cela fonctionne très bien pour les chemins simples comme /User/folder1/folder2/folder3/
.
Dans un scénario plus réaliste, cependant, il semble y avoir un problème si l'un des noms de dossiers contient un numéro de version en pointillés, tel que: /User/username/Library/Tomcat/apache-tomcat-6.0.24
.
Dans ce cas Matcher.group(1)
renverra apache-tomcat-6.0.
au lieu de apache-tomcat-6.0.24
. Je ne sais pas pourquoi cela arrive; Je crois que ça ne devrait pas.
Des idées?
Modifier
Cela fonctionne:
/{1,2}([^/]+)
En .NET {x, y} signifie correspondre aux occurrences x à y du dernier jeton. De plus, vous l'écrivez après la clause [...]. Qu'est-ce que cela signifie en Java? De plus, n'y a-t-il pas de String.Split que vous pourriez utiliser pour diviser sur /? – sisve
@Philip à peu près répondu. Je dois me rappeler d'utiliser uniquement l'expression de quantificateur de plage en dehors des classes de caractères. Ma faute. Je pourrais aussi utiliser la fente de chaîne mais je veux aussi l'utiliser dans un autre modèle regex pour les expressions xpath afin de séparer l'espace de noms du prédicat. Merci pour votre commentaire! – FK82