我有一个函数应该从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))
答案 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)