要找出哪個提交的SQL查詢與LIMIT子句結束,我使用正則表達式如下較短的正則表達式:是有這種模式
re_end_has_limit = re.compile(
r'LIMIT\s+(\d+|\(\d+\)|\(\s+\d+\)|\(\s+\d+\s+\))($|;$|\s+;$|\s+;\s+$)',
re.IGNORECASE)
這符合以下&按預期工作。它匹配以下:
LIMIT 1
LIMIT (1)
LIMIT (1)
LIMIT 1;
LIMIT (1);
LIMIT (1);
LIMIT 1 ;
LIMIT (1) ;
LIMIT (1) ;
LIMIT 1 ;
LIMIT (1) ;
LIMIT (1) ;
注意:最後3項中包含一個尾隨空格字符。
然而,看着正則表達式,我覺得有一種方法可以縮短它,但一直沒有弄清楚。
您可能想了解'*'和'?'。另外,你的正則表達式不匹配'LIMIT(1)'。 – melpomene
感謝,在瞭解'*'之後,我得到了'pattern = r'LIMIT(\ s + \ d + | \ s * \(\ s * \ d + \ s * \))\ s *(; \ s * $ | $)'',在瞭解了'?'後,我達到了接受的答案。 –