Les Allergies
Alimentaires
Posez votre question Signaler

[Java] split d'un String/expression reguliere [Résolu]

Tony - Dernière réponse le 28 mai 2008 à 15:43
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 :)
Lire la suite 

[Java] split d'un String/expression reguliere »

8 réponses
Réponse
+2
moins plus
Ouais c'est possible, parce que j'ai eu beau cherche dans tous ce qui concernait les Pattern, regex et tout, mais bon trouver des expressions regulieres c'est pas ce qui m'emballe le plus :p.

Parce que avec les differents splits pas de probemes, j'y arrive, cependant j'ai pas trop envie de repeter les memes actions a chaque fois que je fais une nouvelle methode, et puis j'ai envie d'avoir un code propre et assez generaliste, qui puisse etre reutilisable et modifiable facilement plus tard.

Enfin bon, je crois que je vais m'anuser a "splitter" tout ca ^^

Merci encore :)
Tony - 28 mai 2008 à 15:29
Probleme resolu, voici la solution

public class Def {

private final String s = "\\s*((([^\"\\[\\]\\s]+))|(\\[([^\\]]+)\\])|(\\\"([^\"]+)\\\"))\\s*";

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){
Pattern p = Pattern.compile(s);
Matcher m = p.matcher(aString);
Vector<String> tmp = new Vector<String>();
while(m.find()){
tmp.add(m.group(1));
}
//petit affichage pour verifier les valeurs du Vector
for(int i=0;i<tmp.size();i++)
System.out.println(tmp.elementAt(i));
}
}


Plus besoin de split()

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Honnêtement à part faire ces splits successifs je vois aps ce que tu pourrais faire d'autres.

Mais en quoi cela te gène t'il???
Ajouter un commentaire
Réponse
+0
moins plus
Bah en fait je me dit qu'avec une expression reguliere ca fait d'un plus propre et de deux je dois l'utiliser plusieurs fois pour des chaines qui par exemple ne contiendraient pas de crochets mais des guillemets, ou des chaines qui ne contiendraient pas de guillemets mais des crochets, ou encore des chaines qui ne contiendraient aucun des deux, uniquement des espaces "simples", ainsi cela m'evite d'avoir a parcourir la chaine avant pour savoir avec quels caracteres je dois utiliser avec la methode split().
Je sais pas si j'ai ete clair :p
Ajouter un commentaire
Réponse
+0
moins plus
Si bien sûr.

Mais je vois difficilement comment améliorer cela.
Ajouter un commentaire
Réponse
+0
moins plus
Ouais c'est pour ca que je poste cette question, n'etant pas une bete en Java ni en expression reguliere, je me suis dit que j'etais peut etre passe a cote de quelque chose, ou qu'il y avait une autre methode ou classe que quelqu'un connaissait. Et puis surtout, sans expressions regulieres, je dois repeter plusieurs fois les splits sur differentes methodes, et comme tout bon programmeur (sans fausse modestie), je suis un peu un flemmard ^^

Merci tout de meme
Ajouter un commentaire
Réponse
+0
moins plus
Je suis exactement comme toi ;).

Et peut-être existe-t-il une méthode plus simple mais en tout cas je vois pas.
Ajouter un commentaire
Réponse
+0
moins plus
Effectivement pas mal.

Bravo
Ajouter un commentaire
Ce document intitulé « [Java] split d'un String/expression reguliere » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?