[RESOLU] split d'un String/expression reguliere - Java - Programmation
Marsh Posté le 27-05-2008 à 23:04:05
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
Marsh Posté le 28-05-2008 à 00:10:05
super toujours pas d'exemple.
/^(.+?)(".+?" )(.+?)(\[.+?\])$/
Marsh Posté le 28-05-2008 à 12:21:40
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
Marsh Posté le 28-05-2008 à 12:26:39
c'est bien. Maintenant apprend les expressions régulières.
Marsh Posté le 28-05-2008 à 13:09:11
Tu peut essayer ca
Code :
|
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.
Marsh Posté le 28-05-2008 à 15:18:58
Solution trouve, voici la bonne expression reguliere :
\\s*((([^\"\\[\\]\\s]+))|(\\[([^\\]]+)\\])|(\\\"([^\"]+)\\\" ))\\s*
Marsh Posté le 28-05-2008 à 15:22:57
Ou plutot voici le bon code :
Code :
|
Bon c'est pas grace a toi taz mais bon bel effort
Marsh Posté le 29-05-2008 à 13:10:06
bah je t'ai filé une regex tout aussi valide. Et plus simple.
Marsh Posté le 27-05-2008 à 18:02:01
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
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
Merci bien
Message édité par wangyilong le 28-05-2008 à 15:25:51