IP地址的正则表达式精确解析

   日期:2020-08-04     浏览:113    评论:0    
核心提示:分段正则表达式解释0-99[1-9]?[0-9]?表示前面[]中的内容可以取或不取100-1991[0-9]{2}100到199的百位相同,十位个位都可以取0-9,使用{2}表示200-2492[0-4][0-9]250-25525[0-5]组合表示一个255使用|连接([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])ip地址格式:xxx.xxx.xxx.xxx(每个xxx表示一个0-255的数字)观..._.
分段 正则表达式 解释
0-99 [1-9]?[0-9] ?表示前面[]中的内容可以取或不取
100-199 1[0-9]{2} 100到199的百位相同,十位个位都可以取0-9,使用{2}表示
200-249 2[0-4][0-9]
250-255 25[0-5]

组合表示一个255使用|连接

([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])

ip地址格式:xxx.xxx.xxx.xxx(每个xxx表示一个0-255的数字)
观看规律发现 xxx.重复了三次,因此用下面的表示(.比较特殊因此需要反斜线转译)

(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}

完整的ip地址还缺少最后一个xxx
拼接上格式为

(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])

使用egrep或 grep -E 不需要对(){}|转译,而使用grep必须转译
因此博主给了如下两种方式

grep -Eo "(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" 
grep -o "\(\([1-9]\?[0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\([1-9]\?[0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)" 

测试结果:

[root@master etc]#ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.106  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::8594:34ed:d5bf:7578  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a6:81:72  txqueuelen 1000  (Ethernet)
        RX packets 3771121  bytes 321230571 (306.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4390188  bytes 587011207 (559.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 40  bytes 3048 (2.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40  bytes 3048 (2.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:99:a5:a2  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
`[root@master etc]#ifconfig |grep -Eo "(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" `192.168.0.106
255.255.255.0
192.168.0.255
127.0.0.1
255.0.0.0
192.168.122.1
255.255.255.0
192.168.122.255
`[root@master etc]#ifconfig |grep -o "\(\([1-9]\?[0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\([1-9]\?[0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)" `192.168.0.106
255.255.255.0
192.168.0.255
127.0.0.1
255.0.0.0
192.168.122.1
255.255.255.0
192.168.122.255

效果截图

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服