怎么用一个shell正则表达式匹配所有ipv4地址?
可以使用以下正则表达式来匹配所有IPv4地址:
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
这个正则表达式的含义是:
^ 表示匹配字符串的开头
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?). 表示匹配一个数字,可以是0-255之间的数,或者是一位或两位的数字,后面跟一个点号{3} 表示前面的表达式重复3次,匹配3个数字和3个点号
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 表示匹配最后一个数字,可以是0-255之间的数,或者是一位或两位的数字$ 表示匹配字符串的结尾
使用这个正则表达式,可以匹配所有IPv4地址,例如:
192.168.1.1
10.0.0.1
172.16.0.1
注意,这个正则表达式只能匹配符合IPv4地址规范的字符串,不能匹配其他格式的字符串,例如IPv6地址、主机名等。
怎么用一个shel正则匹配所有CIDR 私网ip地址?
可以使用以下正则表达式来匹配所有CIDR表示的私网IP地址:
\b(10\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(172\.(1[6-9]|2[0-9]|3[0-1])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(192\.168\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\/([1-2]?[0-9]|3[0-2])\b
这个正则表达式的含义是:
\b 表示匹配单词边界,避免匹配到IP地址的一部分
(10.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) 表示匹配10.x.x.x格式的私网IP地址
| 表示或者
(172.(1[6-9]|2[0-9]|3[0-1]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) 表示匹配172.16.x.x到172.31.x.x格式的私网IP地址
| 表示或者
(192.168.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])) 表示匹配192.168.x.x格式的私网IP地址
/([1-2]?[0-9]|3[0-2]) 表示匹配CIDR表示法中的子网掩码,可以是1-32之间的数字
使用这个正则表达式,可以匹配所有CIDR表示的私网IP地址,例如:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
注意,这个正则表达式只能匹配符合CIDR表示法的私网IP地址,不能匹配其他格式的IP地址。
网友评论