正则表达式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部分