正则表达式python+;变量

正则表达式python+;变量,python,regex,python-2.7,Python,Regex,Python 2.7,伙计们,我希望你们能帮我一把: 我正在尝试查找变量值的匹配项: 网卡是一个字符串 net_card = salida.read() regex = re.compile('([a-z])\w+' % re.escape(net_card)) 如果我运行此代码,它会显示以下错误: regex = re.compile('([a-z])\w+' % re.escape(net_card)) TypeError: not all arguments converted during stri

伙计们,我希望你们能帮我一把:

我正在尝试查找变量值的匹配项: 网卡是一个字符串

net_card = salida.read()    
regex = re.compile('([a-z])\w+' % re.escape(net_card))
如果我运行此代码,它会显示以下错误:

regex = re.compile('([a-z])\w+' % re.escape(net_card))
TypeError: not all arguments converted during string formatting
我还没有找到解决这个问题的方法,即使是用替罪羊角色

现在如果我这样做:

net_card = salida.read()

match = re.search('([a-z])\w+', net_card)
whatIWant = match.group(1) if match else None
print whatIWant
即使网卡的值为NAME=ens32,它也只在输出中显示(e)。

您的正则表达式,
([a-z])\w+
将匹配范围
a-z
中的单个字符作为第一组,并匹配字符串的其余部分作为
[a-zA-Z0-9+
。相反,将两组
\w+
(在评估中为
[a-zA-Z0-9_234;]+
)进行匹配,并用等号分隔。这里有一个表达:

(\w+)=(\w+)
实际上(如果您不关心
“NAME”
),您可以删除第一个组并使用:

net_card = salida.read() 
match = re.match('\w+=(\w+)', net_card)
print(match.group(1) if match else None)

它将输出
ens32

您认为
'([a-z])\w+'%re.escape(网卡)
?(提示:这不是你所想的,这是导致问题的表达;其他一切都无关。)你想匹配什么?您对
NAME=ens32
的结果有何期望?我正在尝试获取ens32部分