[RegEx] problème avec groupe capturant
Bonjour à tous,
J'écris un module dans une application qui récupère des requêtes sql dans des fichiers existants, et les "nettoie" en supprimant diverses choses dedans, à l'aide d'expression régulières. Là je coince sur une expression avec laquelle je veux retirer la clause where de la requête si elle est vide, ç'est à dire si on a dans la chaine
- where <des blancs> <fin de chaine>
- where <des blancs> group by
- where <des blancs> order by
il faut retirer le mot clé where.
Voici ce que j'ai écrit:
Code:
1 2 3
|
Pattern noWhereClausePattern = Pattern.compile("where(\\s*\\z|\\s*group by|\\s*order by)",Pattern.MULTILINE);
query = noWhereClausePattern.matcher(query).replaceAll("\1"); |
lorsque j'essaye avec la chaine suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
/*requête de
test*/select ' ; ' *--tout sélectionner
from table --table exemple
--exemple commentaire
where XXX
order by col /*on veut
champs; vaut zéro*/;
/*test*/ |
j'obtiens ceci:
Code:
1 2
|
select ' ; ' * from table col |
(je précise qu'il a d'autres regex qui sont appliquées sur la chaine d'entrée, d'où le fait qu'il n'y ait plus de retour à la ligne, ni de commentaire)
En gros le order by a été remplacé par un caractère bizarre. Quelqu'un aurait il une idée de ce qui ne va pas dans ma regex?
Merci d'avance.