Python 将变量插入正则表达式

Python 将变量插入正则表达式,python,regex,Python,Regex,我正在尝试编写代码,可以从文本文件中的变量中提取值 因此,如果文件是 “鲍勃=1255麦克=13” 当我将bob指定为var_name时,它将提取1255,依此类推 基于我的代码,但它似乎不起作用 var_name = 'bob' regexp = re.compile(r''+var_name+'.*?([0-9.-]+)') with open("textfile") as s: for line in s: match = regexp.match(line)

我正在尝试编写代码,可以从文本文件中的变量中提取值

因此,如果文件是
“鲍勃=1255麦克=13”

当我将bob指定为
var_name
时,它将提取
1255
,依此类推

基于我的代码,但它似乎不起作用

var_name = 'bob'

regexp = re.compile(r''+var_name+'.*?([0-9.-]+)')

with open("textfile") as s:
    for line in s:
        match = regexp.match(line)
        if match:
            print(match.group(1))

var_name = 'mike'

regexp = re.compile(r''+var_name+'.*?([0-9.-]+)')

with open("textfile") as s:
    for line in s:
        match = regexp.match(line)
        if match:
            print(match.group(1))

你没有提到什么有效/什么无效

您应该使用
\s*=\s*
而不是
*?
。否则,您可以捕获类似于
#edsakjj*kjn
——我想您不会想要这样的

您还可以确保该数字确实是一个数字:
-?\d+(\.?\d+)
:可选(负数为负数时为负数),强制数字,可选:小数点后接数字


关于python代码,我不是你的人,抱歉:(

你使用的是
re.match
,它只在字符串的开头查找内容(而
mike
不在字符串的开头)。使用
re.search
,它可以在任何位置查找内容



稍微偏离主题:请注意,
r'…'
并不表示“regexp literal”,而是表示“原始字符串literal”。它的目的是避免在字符串中转义反斜杠。现在,
'
显然不包含任何反斜杠,因此
r'
'
没有任何区别。另一方面,
*?([0-9.-]+)
非常复杂,我们无法确定是否存在(或将存在)任何反斜杠-但你没有将其转换为原始字符串文字。令人费解的是:)如果没有无用的
r'+
,我会写
var\u name+r'.*?([0-9.-]+)'

你试过
match=regexp.match(line.strip())