python regex来解析不同区域设置的ifconfig输出

2024-06-28 15:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找从ifocnfig输出解析IP和子网详细信息的最佳方法。在

我不想基于inet addrMask:来搜索它,因为当应用不同的语言环境时,正则表达式会随着字符串的更改而失败。在

以下是示例文本:

eth0      Link encap:Ethernet  HWaddr 00:18:F3:BE:18:1E
          inet addr:192.168.10.15  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::218:f3ff:febe:181e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:39456 errors:0 dropped:0 overruns:0 frame:0
          TX packets:45730 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25457904 (24.2 Mb)  TX bytes:6540945 (6.2 Mb)
          Interrupt:20

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:182 errors:0 dropped:0 overruns:0 frame:0
          TX packets:182 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:12812 (12.5 Kb)  TX bytes:12812 (12.5 Kb)

我试过几种方法来做,例如使用\d+\.\d+\.\d+\.\d+,但找不到最好的方法。需要帮助吗。在


Tags: 方法byteslinkmaskrxaddrscopeinet
2条回答

我可以建议使用以下正则表达式:

\b\d+(?:\.\d+){3}\b

它应该与Multiline选项一起使用。在

demo。在

结果在第1组内。请看这个sample code

^{pr2}$

输出:

 [u'192.168.10.15', u'192.168.10.255', u'255.255.255.0', u'127.0.0.1', u'255.0.0.0'] 
import re
tempstr='blah blah 172.16.13.35 blah blah 23.85.85.94'

matches = re.findall(r'\d+[.]\d+[.]\d+[.]\d+', tempstr) 
for match in matches:
    print match

此代码将打印给定字符串tempstr中找到的所有ip。 程序输出为 172.16.13.35 23.85.85.94

相关问题 更多 >