Pour savoir qui a soumis des requêtes SQL se terminent par une clause LIMIT, j'utilise l'expression rationnelle suivante:est là une expression régulière plus courte pour ce modèle
re_end_has_limit = re.compile(
r'LIMIT\s+(\d+|\(\d+\)|\(\s+\d+\)|\(\s+\d+\s+\))($|;$|\s+;$|\s+;\s+$)',
re.IGNORECASE)
Cela correspond à la & œuvres suivantes comme prévu. Il correspond à ce qui suit:
LIMIT 1
LIMIT (1)
LIMIT (1)
LIMIT 1;
LIMIT (1);
LIMIT (1);
LIMIT 1 ;
LIMIT (1) ;
LIMIT (1) ;
LIMIT 1 ;
LIMIT (1) ;
LIMIT (1) ;
Remarque: Les 3 dernières entrées contiennent un espace de fuite. Cependant, en regardant la regex, j'ai l'impression qu'il y a un moyen de l'écrire plus court mais je n'ai pas réussi à le comprendre.
Vous voudrez peut-être en savoir plus sur '*' et '?'. De plus, votre expression régulière ne correspond pas 'LIMIT (1)'. – melpomene
merci, après avoir appris à propos de '*', j'ai obtenu 'pattern = r'LIMIT (\ s + \ d + | \ s * \ (\ s * \ d + \ s * \)) \ s * (; \ s * $ | $) '', et après avoir appris '? 'j'ai atteint la réponse acceptée. –