2009-05-04 7 views
0

Je voudrais créer une expression régulière java qui sélectionne tout de fichier: à la dernière barre oblique (/) dans le chemin du fichier. C'est ainsi que je peux le remplacer par un chemin différent.Comment sélectionner un chemin de fichier en utilisant regex

<!DOCTYPE "file:C:/Documentum/XML%20Applications/joesdev/goodnews/book.dtd"/> 
<myBook>cool book</myBook> 

Quelqu'un a-t-il des idées? Merci!!

Répondre

3

Vous voulez juste aller à la dernière barre oblique avant la citation fin, non? Si oui:

file:[^"]+/

(le fichier ":" string, puis tout sauf », se terminant par un /)
correctement se sont échappés:

String regex = "file:[^\"]+/"; 
+0

C'est ce que j'ai trouvé, mais c'était trop lent pour le poster devant vous. – dustyburwell

0

Essayez ceci:

"file:.*/[^/]*"/>

+0

Merci ... est-il possible de ne pas inclure quoi que ce soit au-delà « goodnews/» – joe

+0

Vous devez utiliser() s au groupe ce que vous voulez et ensuite obtenir le groupe approprié de l'objet de correspondance résultant. –

0

Vous pouvez essayer de Traitez cela vous-même, mais un meilleur schéma serait de simplement choisir les parties entre les guillemets et d'utiliser java.util.File pour séparer le nom du répertoire du nom de fichier. De cette façon, vous n'avez pas à vous soucier de/vs \ ou divers évasion cha coureurs.

0
String newPath = "C:/Documentum/badnews"; 
String originalPath = "<!DOCTYPE \"file:C:/Documentum/XML%20Applications/joesdev/goodnews/book.dtd\"/>"; 
System.out.println(originalPath.replaceFirst("file:C:((/[/\\w%]+))", newPath)); 
Questions connexes