我有一个函数应该从 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))
最佳答案
您需要获取第 1 组内容,因为 ^\((\d*),\)$
模式匹配字符串开头的 (
,而不是 捕获到 Group 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
关于Python 正则表达式不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957438/