rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[Java] split d'un String/expression reguliere

Tony, le mardi 27 mai 2008 à 16:21:16
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 :)
Configuration: Windows XP
Firefox 2.0.0.14
Répondre à Tony  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
goulamass, le mardi 27 mai 2008 à 16:26:17
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???
Répondre à goulamass

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tony, le mardi 27 mai 2008 à 16:35:46
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
Répondre à Tony

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
goulamass, le mardi 27 mai 2008 à 16:51:23
Si bien sûr.

Mais je vois difficilement comment améliorer cela.
Répondre à goulamass

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tony, le mardi 27 mai 2008 à 16:56:37
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
Répondre à Tony

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
goulamass, le mardi 27 mai 2008 à 17:03:00
Je suis exactement comme toi ;).

Et peut-être existe-t-il une méthode plus simple mais en tout cas je vois pas.
Répondre à goulamass

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tony, le mardi 27 mai 2008 à 17:10:47
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 :)
Répondre à Tony

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tony, le mercredi 28 mai 2008 à 15:29:46
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
Répondre à Tony

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 goulamass, le mercredi 28 mai 2008 à 15:43:46
Effectivement pas mal.

Bravo
Répondre à goulamass
Expression régulière (Résolu)Bonjour Savez vous ce que signifie l'expression régulière '/\(\'([^\']+)/' J'avoue que je ne comprends pas bien Merci à ceux qui pourront me répondre www.commentcamarche.net/forum/affich-3143055-expression-reguliere
[Expression régulière]Chaine de 9 chiffres (Résolu)Bonjour Voila je suis une bille en expression régulière et j'aimerais bien un peu d'aide ;p Je voudrais vérifier qu'une chaine n'est composée que de 9 chiffres ni plus ni moins. Exemple : 123456789 Est que quelqu'un aurait une... www.commentcamarche.net/forum/affich-3172818-expression-reguliere-chaine-de-9-chiffres
Expression régulière avec grep (Résolu)Bonjour, je cherche désespérément l'expression régulière qui me permettrait de trouver des mots, mais en ôtant certains contextes. Je m'explique : grep -c -E "failed|unexpectedly exited" me sort le nombre de fois où j'ai... www.commentcamarche.net/forum/affich-2189615-expression-reguliere-avec-grep
[RegExp] Récupérer une adresse IPFinalité Mise en œuvre Explications Interprétation du motif Récupérer une adresse IP Finalité Pour récupérer une IP dans un fichier texte, fichiers journaux, pages web, etc. Mise en œuvre L'expression régulière suivante combinée à la... www.commentcamarche.net/faq/sujet-911-regexp-recuperer-une-adresse-ip
[PHP] Transformer une URL en lien hypertexte cliquableGrâce aux expressions régulières, il est possible de transformer en lien hypertexte toute URL de la forme http://URL (ou ftp://URL) ou bien commençant par www. : www.commentcamarche.net/faq/sujet-891-php-transformer-une-url-en-lien-hypertexte-cliquable
Vérifier le format d'une date en PHPIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au... www.commentcamarche.net/faq/sujet-9883-verifier-le-format-d-une-date-en-php
Expression régulière : Petit problème (Résolu)Bonjour, Alors voilà: Je suis en projet et je dois développer en php un automate pour le web. J'ai appris très recemment qu'on pouvait utiliser les expressions régulières mais comme je n'y connait rien, même avec la doc php.net et des... www.commentcamarche.net/forum/affich-2141005-expression-reguliere-petit-probleme
[PHP] expressions regulières (Résolu)Bonjour, Malgré des nombreuses recherches sur Google et sur le Forum CCM je n'arrive toujours pas a me depatouiller des ces expressions regulieres. Mon probleme est le suivant: Je dispose d'un fichier texte qui est de cette forme :... www.commentcamarche.net/forum/affich-2252061-php-expressions-regulieres
Expressions Regulières PERL (Résolu)Bonjour, voilà, je galère sur les expressions regulières en PERL. Je dois faire un petit programme permettant de vérifier qu'une chaine de caractère commence par une majuscule et que la suite de la chaine est en minuscule ... je n'arrive pas... www.commentcamarche.net/forum/affich-1841319-expressions-regulieres-perl
Télécharger Renamer4MacRenamer4Mac permet de renommer facilement un grand nombre de fichiers. Par un simple glisser/déposer des fichiers sur son icône ou dans sa fenêtre, on peut agir de différentes manières. par Rechercher/Remplacer (expression régulière et... www.commentcamarche.net/telecharger/telecharger-34055084-renamer4mac
VSL VI02 Chamber Strings Giga/EXSVSL VI02 Chamber Strings Giga/EXS,VI 02 ,VSL Vienna Symphonic Library Horizon Chamber Strings, Giga/EXS, flexible and expressive string ensemble library, four groups (6 violins, 4 viola, 3 chello and 2 double-bass), useful for small orchestrations, split www.commentcamarche.net/guide-achat/vsl-vi02-chamber-strings-giga-exs-174246239-fiche-technique
Javascript - L'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des portions de la chaîne correspondant au... www.commentcamarche.net/javascript/jsregexp.php3
PHP - Expressions régulières Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au modèle. Ce système est emprunté au système... www.commentcamarche.net/php/phpreg.php3
Javascript - L'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation de chaînes de caractères. L'objet string a... www.commentcamarche.net/javascript/jsstring.php3
Toutes les réponses pour « [Java] split d'un String/expression reguliere »