Précédent   Forum des professionnels en informatique > Java > Général Java > APIs > java.util
java.util Vos questions sur les classes du paquetage java.util : Collections et autres structures de données, Date et Calendrier, Properties, expressions régulières, ..., et sur les APIs tierces les concernant.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2011, 11h20   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 8
Points : 8
Par défaut Regex pour filtrer une requête SQL

Bonjour,

Je cherche à récupérer les différentes parties d'une requête SQL.

Pour la partie select, ça fonctionne, mais pour le from je n'y arrive pas.

pour une requête "select .. from .. where .. order by...", je veux avoir ce qui se trouve entre le from et le where. Le where et le order by n’étant pas toujours présent.

J'ai le code suivant:
Code :
1
2
3
4
5
6
 
String newQuery = "select  ... from ... where ... order by ...";
Pattern from =Pattern.compile(".*from (.*) *(where.*)? *(order by.*)?");
Matcher m=from.matcher(newQuery);
if(m.find())
   System.out.println(m.group(1));
Mais le where et le order by apparaissent quand même.
Je pense que la partie (.*) va jusqu'au bout de la chaine mais je ne trouve pas comment lui dire de s’arrêter s'il y a un where ou un order by

Ma question est elle claire?

Merci par avance.
selenar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 11h43   #2
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
C'est quoi Pattern ? Je ne connais pas.

Sinon, une solution peut-être moins propre : Utiliser indexOf de String qui va renvoyer les positions de regex. Ensuite, tu fais un substring. C'est pas très propre j'en conviens mais ça fonctionne
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 12h29   #3
Invité régulier
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 8
Points : 8
Il s'agit de la classe java.util.regex.Pattern. voir ici pour plus de détail.

C'est ce que j'ai fait, mais j'aimerais savoir si c'est possible avec les expressions régulières.
selenar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 16h07   #4
Membre à l'essai
 
Homme
Étudiant
Inscription : août 2007
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 70
Points : 22
Points : 22
essaye sa:
Code :
1
2
3
4
5
6
7
8
9
10
 
String newQuery = "select  .1. from .2. where .3. order by .4.";
        Pattern from =Pattern.compile("select (.*) from (.*) where(.*) order by(.*)");
        Matcher m=from.matcher(newQuery);
        int i=1;
        m.find();
        while(i<=4){  
            System.out.println(m.group(i));
        i++;
        }
IMPRO est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h09.


 
 
 
 
Partenaires

Hébergement Web