无法使用正则表达式解析sqlite查询

时间:2016-10-08 04:30:04

标签: python regex sqlite

我试图想出一种方法来迭代数据库,并使用正则表达式匹配其中包含02的所有行。当匹配时,计数应重置为0,当没有匹配时,计数应累积为负1.当我使用列表时,代码有效。

import sqlite3
import re

conn = sqlite3.connect('p34.db')

c = conn.cursor()



r = re.compile(r'\b[5-9]*(?:0[5-9]?2|2[5-9]?0)[5-9]*\b')
q = "SELECT Number FROM 'Pick 3'"



c.execute(q)
rez = c.fetchall()
count = 0 


for i in rez:
    if i == r:
        count = 0
    else:
        count = count -1

print(count)
conn.close()
print (rez)

1 个答案:

答案 0 :(得分:0)

您可能希望使用r.search()执行正则表达式搜索:

for i in rez:
    if r.search(i[0]):
        count = 0
    else:
        count -= 1

注意使用i[0]从查询返回的每个元组中获取第一个值。

使用i == r只需将比较元组i(由查询返回)与编译的正则表达式模式r进行比较,并且永远不会为真。它不执行给定模式的任何搜索方法。