[Java] Regexp pour sortir un chemin sans le nom de fichier

Regexp pour sortir un chemin sans le nom de fichier [Java] - Java - Programmation

Marsh Posté le 07-04-2004 à 22:48:48    

Sous jEdit la méthode getPath() du buffer courant donne le chemin entier du fichier
Ex :  
 
c:\tex\jocebuglist.tex
 
Je veux isoler c:\tex...
 
g fait ca :  
 
 
Je veux virer la fin du fichier contenue après le dernier \, ce qui donne donc :
chaine.replace(" \\\\w*\\.\\btex\\b","" );
 
ce qui si g bien compris permet de me donner un motif commençant par un \, contenant un nombre de donné de caractère alphanumérique et se terminant par .tex  
 
hors ca marche pas...la chaine contient la même chose à l'arrivée...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 07-04-2004 à 22:48:48   

Reply

Marsh Posté le 07-04-2004 à 23:07:34    

euh String.substring(0,String.lastIndexOf(File.pathSeparator)) [:kiki]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 07-04-2004 à 23:13:01    

ben oui mais si tu ignores l'existence du pathseparator, ca vient pas à l'idée tt seul ce genre de construction...surtout que rien dans String peut y faire penser...
 
Pour ma culture G, y'a quoi qui merde dans ma regexp ?


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 07-04-2004 à 23:27:53    

Jubijub a écrit :

ben oui mais si tu ignores l'existence du pathseparator, ca vient pas à l'idée tt seul ce genre de construction...surtout que rien dans String peut y faire penser...
 
Pour ma culture G, y'a quoi qui merde dans ma regexp ?

ben meme sans pathSeparator, tu fais la meme chose avec '\\' quoi [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 07-04-2004 à 23:32:20    

merci d'avoir apporté une réponse à mon problème, mais je persiste :  
 
Pour ma culture G, y'a quoi qui merde dans ma regexp ?
 
PS : c vrai que j'y avais pas pensé du tout...la manipulation de chaine j'en fais depuis 2h donc si tu veux j'ai pas encore tt les usages possibles de la class String et autres en tete, je sais, je mérite le fouet grand maitre...
 
   [:bonux]


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-04-2004 à 00:05:06    

c'est une regex alors qu'un simple parcourt suffit ?
 
tiens, je vais aller vérifier que le code de lastIndexOf est bien de droite à gauche pour fêter ça.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2004 à 00:18:09    

nraynaud a écrit :

c'est une regex alors qu'un simple parcourt suffit ?
 
tiens, je vais aller vérifier que le code de lastIndexOf est bien de droite à gauche pour fêter ça.

Code :
  1. static int lastIndexOf(char[] source, int sourceOffset, int sourceCount,
  2.                            char[] target, int targetOffset, int targetCount,
  3.                            int fromIndex) {
  4.         /*
  5.  * Check arguments; return immediately where possible. For
  6.  * consistency, don't check for null str.
  7.  */
  8.         int rightIndex = sourceCount - targetCount;
  9. if (fromIndex < 0) {
  10.     return -1;
  11. }
  12. if (fromIndex > rightIndex) {
  13.     fromIndex = rightIndex;
  14. }
  15. /* Empty string always matches. */
  16. if (targetCount == 0) {
  17.     return fromIndex;
  18. }
  19.         int strLastIndex = targetOffset + targetCount - 1;
  20. char strLastChar = target[strLastIndex];
  21. int min = sourceOffset + targetCount - 1;
  22. int i = min + fromIndex;
  23.     startSearchForLastChar:
  24. while (true) {
  25.     while (i >= min && source[i] != strLastChar) {
  26.  i--;
  27.     }
  28.     if (i < min) {
  29.  return -1;
  30.     }
  31.     int j = i - 1;
  32.     int start = j - (targetCount - 1);
  33.     int k = strLastIndex - 1;
  34.     while (j > start) {
  35.         if (source[j--] != target[k--]) {
  36.      i--;
  37.      continue startSearchForLastChar;
  38.  }
  39.     }
  40.     return start - sourceOffset + 1;
  41. }
  42.     }


oulà, c'est même du agli opimized !


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2004 à 00:18:41    

j'ai compris que la regex ct pas le mieux...mais ct ma première idée, et j'aimerais bien l'emmener jusqu'au bout...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-04-2004 à 00:20:35    

moi je corrigerai pas ta regex, j'irais même jusqu'à dire que je ne l'ai pas lue.
 
Les regex c'est trop chiant à lire et à prévoir ce que ça va faire pour être utile.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2004 à 00:24:20    

ah, c intéressant ca : si tu t'en sers pas, ca sous entend qu'il y a des méthodes aussi fines avec des fonctions standards pour sortir des patterns précis ?
 
genre un mot qui commence et se termine par la même lettre, ou qqc pour vérifier la validiter d'une adresse mail (c que \w+@w+(\.\w)+ fait par ex)....


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-04-2004 à 00:24:20   

Reply

Marsh Posté le 08-04-2004 à 00:25:25    

agli ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-04-2004 à 00:39:58    

personne ne ris jamais à mes blgues !
 
highly.
 
 


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2004 à 00:41:45    

Jubijub a écrit :

vérifier la validiter d'une adresse mail (c que \w+@w+(\.\w)+ fait par ex)....

nicolas.raynaud@moncul.com met en défaut ta regex à la con.
 
La validation de données, ça se fait après lecture d'une RFC, pas en tripatouillant des regex !


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2004 à 00:43:38    

tiens bah nraynaud@univ-mars.edu aussi.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2004 à 00:46:44    

ct un exemple hein...t'a pas répondu à ma question


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-04-2004 à 00:49:32    

Jubijub a écrit :

ct un exemple hein...t'a pas répondu à ma question

je sais pas trop, je pense que dans ce cas, si la RFC est pas trop bordélique je ferais une regex.
 
mais je dois avouer qu'il ne me viendrait pas trop à l'esprit de valider les emails.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2004 à 00:51:28    

C'était un exemple !!!!  [:athlonmp]  [:aless]  
 
Question d'ordre plus général : existe-t-il un moyen purement java de trouver des motifs complexes aussi précisément qu'avec des regexp ?


Message édité par Jubijub le 08-04-2004 à 00:55:06

---------------
Jubi Photos : Flickr - 500px
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed