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

标签 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)

最佳答案

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

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

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

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

关于python - 无法使用正则表达式解析sqlite查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39928690/

相关文章:

sqlite - 从现有模式生成表关系图(对于 Sqlite 数据库)

python - QMediaPlayer negative playbackRate 不倒回视频

python - python 正则表达式分组的最佳实践

android - 最安全的移动数据库策略

java - 正则表达式任何形式的数字包括括号

regex - 使用正则表达式在字符串中查找日期

Android SQLite Journal 行为改变了吗?

python - 如何更改Python的日期时间格式

python - 将 pandas 日期时间索引向前设置一天

python - Pandas df.sum() 只创建 0