Python 正则表达式不返回

标签 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))

最佳答案

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

相关文章:

python - matplotlib 布局类似于手动绘制

python set union 操作在命名元组中表现不佳

python - Pika basic_publish 在多个队列上发布时挂起

python - 子类 dict : UserDict, dict 还是 ABC?

regex - 如何修复此字符串的正则表达式 "#*abc"我想匹配这个确切的字符串,其中 abc 也可以是任何包含空格的单词

regex - 带变量的 AWK 负正则表达式

正则表达式匹配单词或点

regex - 非单行 REGEXP

python - Python如何从XML(例如Unicode)获取列表到列表?

c# - 正则表达式匹配字符串中的逗号