Pb regex java

thesleeper Messages postés 2 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 25 mai 2009 - 21 mai 2009 à 11:23
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 26 mai 2009 à 10:25
Bonjour,


je travaille actuellement sur les regex en Java. j'ai un ptit pb. le code suivant marche super bien.

Mais kand je lis le meme regex , stocké dans un fichier xml, en le remplaçant just là, la fonction

marche plus.

Impossible d'identifier le regex "Chaine non trouvée" à tous les coups


/* -----------------------------*/

import java.util.regex.Pattern;

import java.util.regex.Matcher;


public class Main {

public static void main(String[] args) {

String word = " public static void main( String[] args )";

String regex;

regex =
"((public)((\\s+)*)(static)((\\s+)*)(void)((\\s+)*)(main)(\\()((\\s+)*)(String)(\\[)(\\])((\\s+)*)((?:[a-z][a-z0-9_]*))((\\s+)*)(\\)))";

String re2 "((\" + "\\s+)*)", re1 "(.*?)";

regex += re2 + re1;

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(word);

if (matcher.find())

System.out.println("chaine trouvée");

else

System.out.println("chaine non trouvée");

}

}


/* ---------------------------*/


Mon fichier XML je le lis assez simplement. en utilisant le package jdom. la fonction est la suivante.

Mon fichier est kom suit:

<?xml version="1.0" encoding="utf-8"?>

<language name="java" endInstr=";">

<keyword><key>pbl</key><word>myregex</word></keyword>


/*-----------------------------------------------------*/

SAXBuilder sxb = new SAXBuilder();

try {

document = sxb.build(new File(path));

}

catch(Exception e){

System.out.println("le fichier peut pas etre ouvert");

System.out.println(e.getMessage());

}

racine = document.getRootElement();

Iterator<?> i = racine.getChildren("keyword").iterator();

while (i.hasNext()) {

elt = (Element)i.next();

System.out.println(elt.getChild("key").getText() + ", " + elt.getChild("word").getText());

}

/*------------------------------------------------------*/


i need ur help
the quieter you become, the more you will be able to hear

3 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
25 mai 2009 à 15:30
Salut,

je comprends pas vraiment quel est ton pb. Que veux tu faire exactement ? Je ne vois pas le lien entre ta régex et le fichier xml ...
0
thesleeper Messages postés 2 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 25 mai 2009
25 mai 2009 à 20:00
je m'explik.
la regex est stockée est dans le fichier XML ki est une sorte de fichier de config si on veut.

il faudrait que je puisse la lire, et reconnaitre l'expression à partir d'un autre texte par exemple. mais ça marche pas. PAr contre la mm regex, je la lis dans mon XML, je l'affiche sur la console, je recopie, je colle et j'execute dans le code ci dessus, ça marche sans pb.

je comprend pas ce ki va pas...
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
26 mai 2009 à 10:25
En fait c'est tout simple, dans le xml, tu ne dois pas doubler le backslash.
C'est nécessaire dans le code pour éviter l'interprétation du backslash par le compilo mais pas dans le xml qui prend la chaine de caractère dans son ensemble.
C'est facilement visible en débugage quand tu compares le contenu de la variable regex.
0
Rejoignez-nous