You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则表达式从ifconfig输出中正确提取MAC地址?

问题原因

  • 正则首尾的^和$是行/字符串首尾锚定符,要求整个匹配内容从字符串开头到结尾全是MAC地址,但你的输入是完整的ifconfig输出,MAC地址前有ether 前缀、后有其他内容,完全不符合锚定规则,所以匹配失败。
  • 你的正则里写了两个捕获分组([0-9A-Fa-f]{2}[:-])和([0-9A-Fa-f]{2}),就算匹配成功,re.findall也只会返回分组里的内容,不会返回完整的MAC地址字符串。

解决方法

修改正则即可,可参考如下两种写法:

写法1:通用MAC匹配

import re
def cleanOutput(output):
    # ?: 表示非捕获组,\b 是单词边界,避免匹配到ipv6地址里的类似片段
    mac_list = re.findall(r'\b(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\b', output)
    if mac_list:
        return mac_list[0]
    return ""

写法2:带ether前缀精准匹配

如果你的输出里MAC地址前面固定带ether 前缀,可以直接精准匹配,避免误匹配其他内容:

import re
def cleanOutput(output):
    mac_match = re.search(r'ether\s+((?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2})', output)
    if mac_match:
        return mac_match.group(1)
    return ""

调用修改后的函数即可直接拿到6a:57:e6:6e:9e:5e的目标结果。

内容的提问来源于stack exchange,提问作者Ruth Edges

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:06:03