Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2945 connectés 

  FORUM HardWare.fr
  Programmation
  Java

   [RESOLU] split d'un String/expression reguliere

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] split d'un String/expression reguliere

n°1737945
wangyilong
Posté le 27-05-2008 à 18:02:01  profilanswer
 

Bonjour a tous :),
 
Voila je vous expose mon probleme : je cherche a decouper un String (en Java) d'une certaine maniere seulement je n'ai pas reussi a trouver une l'expression reguliere correspondante. Un petit exemple sera plus parlant :
Je veux decouper ce String :
Voici la "chaine que je veux " decouper et j'y [arrive pas]
En fait, j'aimerais, a l'aide de la methode String.split(expression) pouvoir decouper cette chaine comme ceci :
Voici la
"chaine que je veux"
decouper et j'y
[arrive pas]
En gros, je veux decouper la chaine a partir des espaces quie ne sont pas contenus dans les guillemets, ni dans les crochets. J'ai pas mal lutte et j'ai toujours pas reussi a trouver d'expressions qui marchent (a dire vrai je ne sais pas si il y en a). J'ai aussi penser a faire plusieurs split() successifs (genre 1 pour les guillemets, puis un pour les crochets et un pour les espaces) mais bon je me suis dit ca fait un peu trop a l'arrache :p
Donc voila j'espere que quelqu'un saura trouver la reponse (positive ou negative), ou bien me proposer une autre solution, parce que sinon ca sent les split() successifs :p
 
Merci bien :)


Message édité par wangyilong le 28-05-2008 à 15:25:51
mood
Publicité
Posté le 27-05-2008 à 18:02:01  profilanswer
 

n°1738020
Taz
bisounours-codeur
Posté le 27-05-2008 à 19:45:11  profilanswer
 

du code on bit rien

n°1738082
wangyilong
Posté le 27-05-2008 à 23:04:05  profilanswer
 

Bon en gros voila ma méthode  
 
public void parseString(String maChaine) {
       Pattern p = Pattern.Compile(expression_reguliere);
       String [] resultat = p.split(maChaine);
       //traitement avec mon tableau de String resultat
}
 
ma Chaine est de ce type :  
Voici la "chaine que je veux " decouper et j'y [arrive pas]  
 
Comme je l'ai dit précédemment, je veux la parser de manière a avoir pour un tableau de String comme resultat  
resultat[0] = Voici la
resultat[1] = "chaine que je veux"
resultat[2] = decouper et j'y
resultat[3] = [arrive pas]  
 
J'ai beau eu cherché, je n'ai pas reussi à trouver d'expression regulière pouvant me la parser ainsi, donc j'aimerais savoir si quelqu'un a une petit idée de l'expression (impossible?), ou bien encore une autre solution, excepté faire des split() successifs
 
Merci


Message édité par wangyilong le 27-05-2008 à 23:04:38
n°1738097
Taz
bisounours-codeur
Posté le 28-05-2008 à 00:10:05  profilanswer
 

super toujours pas d'exemple.
 
/^(.+?)(".+?" )(.+?)(\[.+?\])$/

n°1738260
wangyilong
Posté le 28-05-2008 à 12:21:40  profilanswer
 

Bon voila que code que j'ai teste avec ton expression reguliere  
 
public class Def {
 private final String c = "/^(.+?)(\".+?\" )(.+?)(\\[.+?\\])$/";
 
 public static void main(String[] args) {
  Def d = new Def("Voici la \"chaine que je veux \" decouper et j'y [arrive pas]  " );
 }
 
 public Def(String aString){
  String []tmp = aString.split(c);
                //affichage de la taille du tableau
  System.out.println(tmp.length);
                //affichage de chaque case du tableau
  for(int i=0;i<tmp.length;i++)
   System.out.println("\n" + tmp);
 }

 
et voici l'affichage que j'ai recu  
 
[i]1
 
Voici la "chaine que je veux " decouper et j'y [arrive pas]  

 
Je sais pas si c'est de cette maniere qu'il fallait l'utiliser mais comme tu peux le voir cela ne fonctionne pas, et a vrai dire je n'ai pas bien saisi ton expression (faut dire que c'est pas mon fort tout comme le java ). Si tu pouvais m'eclairer ...
 
Merci

n°1738262
Taz
bisounours-codeur
Posté le 28-05-2008 à 12:26:39  profilanswer
 

c'est bien. Maintenant apprend les expressions régulières.

n°1738271
spos93
Posté le 28-05-2008 à 13:09:11  profilanswer
 

Tu peut essayer ca  
 

Code :
  1. (([^"\[\]\s]*))|(\[([^]]*)\])|(\"([^"]*)\" )


 
En gros :  
Tous les caracteres sauf guillemets espaces crochets
OU
Crochet (tout sauf crochet) crochet
OU
Guillemet (tous sauf guillemets) guillemet
 
 
Si c'est pour dire de la merde Taz repond pas.

n°1738361
wangyilong
Posté le 28-05-2008 à 15:18:58  profilanswer
 

Solution trouve, voici la bonne expression reguliere :  
 
\\s*((([^\"\\[\\]\\s]+))|(\\[([^\\]]+)\\])|(\\\"([^\"]+)\\\" ))\\s*

n°1738365
wangyilong
Posté le 28-05-2008 à 15:22:57  profilanswer
 

Ou plutot voici le bon code :  
 

Code :
  1. public class Def {
  2.         private final String s = "\\s*((([^\"\\[\\]\\s]+))|(\\[([^\\]]+)\\])|(\\\"([^\"]+)\\\" ))\\s*";
  3.         public static void main(String[] args) {
  4.                 Def d = new Def("Voici la \"chaine que je veux \" decouper et j'y [arrive pas]  " );
  5.         }
  6.         public Def(String aString){
  7.                 Pattern p = Pattern.compile(s);
  8.                 Matcher m = p.matcher(aString);
  9.                 Vector<String> tmp = new Vector<String>();
  10.                 while(m.find()){
  11.                         tmp.add(m.group(1));
  12.                 }
  13.                 //petit affichage pour verifier les valeurs du Vector
  14.                 for(int i=0;i<tmp.size();i++)
  15.                         System.out.println(tmp.elementAt(i));
  16.         }
  17. }


 
Bon c'est pas grace a toi taz mais bon bel effort


Message édité par wangyilong le 28-05-2008 à 15:28:30
n°1738835
Taz
bisounours-codeur
Posté le 29-05-2008 à 13:10:06  profilanswer
 

bah je t'ai filé une regex tout aussi valide. Et plus simple.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

   [RESOLU] split d'un String/expression reguliere

 

Sujets relatifs
[RESOLU ] exec() return value = 11[RESOLU] [VBA Excel] ajout dynamique de boutons dans une feuille excel
Résolu. [JavaScript] - Petite question sur l'attribut disabled[RESOLU] problème script et commande awk
[Résolu] Lettres accentuées et substitution[Resolu] Enregistrer un fichier sous.....
[résolu] supprimer liens deja visités en arrivant sur le site[RESOLU] Récupérer des valeurs par une requête ldap_search
[RESOLU] Enregistrement d'imagesCondition d'exclusion avec not in(résolu par.... moi)
Plus de sujets relatifs à : [RESOLU] split d'un String/expression reguliere


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR