要找出哪个提交的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 * $ | $)'',在了解了'?'后,我达到了接受的答案。 –