Python Regex没有返回

时间:2017-05-13 19:56:18

标签: python regex

我有一个函数应该从mysql表返回一定数量。使用正则表达式将数字从字符串中过滤掉,如:^\((\d*),\)$。原始字符串为(36,),正则表达式应将其更改为:36。但我仍然得到(36,)!

class db:
    con = mysql.connect()
    cur = con.cursor()

def fo(self, query):
    self.cur.execute(query)
    return re.search('^\((\d*),\)$', 
    str(self.cur.fetchone())).group(0)

进一步我称之为函数:

return db().fo('SELECT id FROM `GIP-Schema`.user WHERE name = \'{0}\''.format(name))

2 个答案:

答案 0 :(得分:3)

您需要获取第1组内容,因为^\((\d*),\)$模式匹配字符串开头的(,而捕获到第1组零或更多数字(我建议使用捕获一个或多个数字),然后匹配字符串末尾的,)。此外,最好首先检查是否找到匹配项:

def fo(self, query):
    self.cur.execute(query)
    m = re.search('^\((\d+),\)$', str(self.cur.fetchone()))
    res = ''
    if m:
        res = m.group(1)
    return res

请参阅regex demo

答案 1 :(得分:1)

感谢Wiktor指出它,显然你的第一组是1,而不是0 .group(0) - > .group(1)