Pb regex java

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 la 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");
}
}

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

i need ur help.
--
share your knowledge

4 réponses

  1. Salut,

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

    Souci de lecture (encodage) à partir du fichier XML ? Il serait utile de nous montrer comment tu lis à partir de celui-là. Ouvre le fichier XML avec un outil comme Notepad2 ou encore Notepad++ ou encore UltraEdit etc. pour voir l'encodage réel du fichier (qui doit normalement correspondre à l'encodage déclaré dans l'en-tête xml).

    ++
    1. mon fichier 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>

      je sais donc pas comment proceder avec l'encodage qui comme tu dis serais la source du probleme.

      /*-----------------------------------------------------*/
      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());
      }
      /*------------------------------------------------------*/

      thanks...
      1. Est-ce que ton document est vraiment encodé en utf-8 (comme son en-tête l'indique)? Il me semble (à vérifier!) que JDom tient compte de l'en-tête et que si déclaration fausse (par rapport au contenu réel) ce n'est pas bon.
        1. ouais. il est vraiment en utf-8. j'ai jamais eu à faire ce genre de manip auparavant.....
          je sais donc pas trop comment m'y prendre....

          <?xml version="1.0" encoding="utf-8"?>
          <language name="java" endInstr=";">