Python正则表达式不返回
我有一个函数,它应该从mysql表返回一个特定的数字。使用类似这样的正则表达式从字符串中过滤出数字: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)您需要
^\(\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)
Capturegroup(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