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())