Python正则表达式不返回

Python正则表达式不返回,python,regex,Python,Regex,我有一个函数,它应该从mysql表返回一个特定的数字。使用类似这样的正则表达式从字符串中过滤出数字:^\(\d*),\)$。原始字符串是(36,),正则表达式应该将其更改为:36。但我还是得到了(36,) 我进一步调用函数: return db().fo('SELECT id FROM `GIP-Schema`.user WHERE name = \'{0}\''.format(name)) 感谢Wiktor指出,很明显,您的第一组是1,而不是0 .group(0)->.group(1)您需要

我有一个函数,它应该从mysql表返回一个特定的数字。使用类似这样的正则表达式从字符串中过滤出数字:
^\(\d*),\)$
。原始字符串是
(36,)
,正则表达式应该将其更改为:
36
。但我还是得到了(36,)

我进一步调用函数:

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

感谢Wiktor指出,很明显,您的第一组是1,而不是0
.group(0)
->
.group(1)

您需要获取第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

查看
.group(0)
->
.group(1)
Capture
group(1)
或将正则表达式更改为
^\(?:(\d*),\)$
。哇,那容易吗?该死的…
group(0)
是整个匹配的表达式。@juanpa.arrivillaga我不明白你的意思,它是正则表达式使用的值,如果那不起作用,正则表达式就没有意义了,对吗?
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