Je souhaiterais àl'aide d'une expression régulière capturer le contenu de la clause FROM d'une requete SQL.
Mais je n'arrive pas à trouver l'expression régulière qui va bien. Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
            Pattern pattern = Pattern.compile(".+FROM\\s(.+)\\s+(WHERE|ORDER BY)\\s.+", Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher("SELECT * FROM Client WHERE Nom = 'Dupont' ORDER BY Nom");
            System.out.println(matcher.matches());
            for(int i=0;i<matcher.groupCount();i++)
            {
                System.out.println(matcher.group(i));
            }
J'ai volontairement simplifié l'expression régulière pour l'exemple, ici je considere que ma clause FROM est necessairement suivit d'un WHERE ou d'un ORDERBY.
Malheureusement cette expression régulière ne marche pas car elle capture : "Client WHERE Nom = 'Dupont'" au lieu de capturer uniquement "Client" comme je le voudrais.
Quelqu'un aurait il une idée d'expression régulière correct pour traiter mon cas.

merci par avance.