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 :
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.
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)); }
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.
Partager