【发布时间】:2021-07-08 02:31:08
【问题描述】:
下面是网络设备路由表:
destination nexthop metric flags interface
0.0.0.0/0 192.168.86.1 10 A S ethernet1/1
10.1.1.0/26 192.168.86.81 10 A S ethernet1/1
1.1.1.1/32 192.168.86.191 0 A C ethernet1/1
如何使用正则表达式匹配格式为网络/子网掩码的字符串(即本例中的0.0.0.0/0, 10.1.1.0/26, 1.1.1.1/32)?
我尝试了以下。它不起作用:
import re
ip_with_mask = re.search(r'((2[0-5]|1[0-9]|[0-9])?[0-9]\.){3}((2[0-5]|1[0-9]|[0-9])?[0-9])/(^[1-9]$|^[1-2][0-9]$|^3[0-2]$)', oneline).group()
((2[0-5]|1[0-9]|[0-9])?[0-9]\.){3}((2[0-5]|1[0-9]|[0-9])?[0-9]) 是 IP 地址。
/ 在网络和子网掩码之间。
^[0-9]$|^[1-2][0-9]$|^3[0-2]$ 是 0-32 子网掩码号。
这个正则表达式有什么问题?
【问题讨论】:
-
我不认为
regex是这里的正确选择。您希望实现什么目标? -
我想得到以下结果并保存到一个csv文件:0.0.0.0/0,192.168.86.1 10.1.1.0/26,192.168.86.81 1.1.1.1/32,192.168.86.191
-
您如何检索数据?能否包含检索路由表的代码?
-
我正在使用 netmiko SSH 连接到 Palo Alto VM 防火墙,执行“显示路由路由”。 connection = ConnectHandler(**device_dict) with open(routing-table.txt", 'w') as writefile: output = connection.send_command('show routing route') writefile.write(output) writefile.write('\n ') connection.disconnect()
-
为什么在子网掩码定义中使用行尾
$符号?