正则表达式 之 子网掩码mask 一篇就搞定 您所在的位置:网站首页 子网ip与子网掩码不匹配 正则表达式 之 子网掩码mask 一篇就搞定

正则表达式 之 子网掩码mask 一篇就搞定

2024-07-17 19:40| 来源: 网络整理| 查看: 265

正则表达式: 

pattern = '^((128|192)|2(24|4[08]|5[245]))(\.(0|(128|192)|2((24)|(4[08])|(5[245])))){3}$'

Python 函数例子: 

import re def check_mask(mask_str): pattern = '^((128|192)|2(24|4[08]|5[245]))(\.(0|(128|192)|2((24)|(4[08])|(5[245])))){3}$' res = re.match(pattern, mask_str) if not res: return False return True

你拷贝过去就完事了,可能不会再刨根问底了。那为什么是这样写?你想过吗?

正则表达式,见 https://blog.csdn.net/u012219045/article/details/98599548

子网掩码, 见 https://blog.csdn.net/u012219045/article/details/60466352 或者 百度百科 也非常详细 https://baike.baidu.com/item/%E5%AD%90%E7%BD%91%E5%88%92%E5%88%86/5446046?fr=aladdin

子网划分:是通过借用IP地址中若干位主机地址来充当子网的网络地址,从而将原网络划分为若干子网。

拿 C类子网掩码 举例:

① 划分子网数 ② 子网位数 ③子网掩码(二进制) ④ 子网掩码(十进制) ⑤ 每个子网主机数

① 1~2        ② 1   ③ 11111111.11111111.11111111.10000000   ④ 255.255.255.128   ⑤ 126

① 3~4        ② 2   ③ 11111111.11111111.11111111.11000000   ④ 255.255.255.192   ⑤ 62

① 5~8        ② 3   ③ 11111111.11111111.11111111.11100000   ④ 255.255.255.224    ⑤ 30

① 9~16      ② 4   ③ 11111111.11111111.11111111.11110000    ④ 255.255.255.240   ⑤ 14

① 17~32    ② 5   ③ 11111111.11111111.11111111.11111000    ④ 255.255.255.248    ⑤ 6

① 33~64    ② 6   ③ 11111111.11111111.11111111.11111100    ④ 255.255.255.252     ⑤ 2

借位:从左到右借的,不是从右到左,所以只能是 128,192,224,240,248,252,254,255。但在这里 254,255 没啥意义,因为每个子网中,第一个IP地址(即主机部分全部为0的IP)和最后一个IP(即主机部分全部为1的IP)不能分配给主机使用。

所以 B类子网掩码 来说,只能是下面的几个:

255.255.0.0

255.255.128.0

255.255.192.0

255.255.224 .0

255.255.240.0

255.255.248.0

255.255.252.0

255.255.254.0

255.255.255.0

255.255.255.128

255.255.255.192

255.255.255.224

255.255.255.240

255.255.255.248

255.255.255.252

A类子网掩码:

255.0.0.0

255.128.0.0

255.192.0.0

255.224.0.0

255.240.0.0

255.248.0.0

255.252.0.0

255.254.0.0

255.255.0.0

255.255.128.0

255.255.192.0

255.255.224 .0

255.255.240.0

255.255.248.0

255.255.252.0

255.255.254.0

255.255.255.0

255.255.255.128

255.255.255.192

255.255.255.224

255.255.255.240

255.255.255.248

255.255.255.252

下图来自百度文档 https://wenku.baidu.com/view/6632813bee06eff9aff80705.html 

CIDR 格式的IP段 输出 字符串格式的子网掩码:

例如: 192.168.1.1/24 的子网掩码是 255.255.255.0

def exchange_maskint(mask_int): bin_arr = ['0' for i in range(32)] for i in range(mask_int): bin_arr[i] = '1' tmpmask = [''.join(bin_arr[i * 8:i * 8 + 8]) for i in range(4)] tmpmask = [str(int(tmpstr, 2)) for tmpstr in tmpmask] return '.'.join(tmpmask) def get_mask(cidr): mask = cidr.split("/")[1] return exchange_maskint(int(mask)) print(get_mask('192.168.1.1/24'))

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有