【正则表达式】IPv4地址的正则匹配
先亮结论,不想看分析的可以点个赞直接溜!
\b(?:(?: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])\b
下面是合理性分析:
IPv4地址的格式是nnn.nnn.nnn.nnn
,其中每一个nnn为0~255之间的整数。
\b
匹配一个单词边界,即字与空格间的位置。比如\bCha
可匹配Chapter
,而ter\b
也可以匹配Chapter
。
剩下的内容是(?:(?: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。
[0-9]
表示0~9的任一整数,[01]
表示0或1,|
表示或,而?
表示出现0次或1次。
所以这个子结构可以解释为:0~9或10~99或100~199或200~255,综合起来就是0~255。
值得注意的是毕竟不能把1
表示为001
,所以这里的处理稍显复杂。
假设用A代指25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]
,剩下的内容变成了(?:(?:A)\.){3}(?:A)
。
(?:)
是一个结构,表示非捕获分组。
()
表示捕获分组,()
会把每个分组里的匹配的值缓存,使用$n
(n是一个整数,表示第n个捕获组的内容)可用。
但使用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:
放在第一个选项前(即(?:)
)来消除这种副作用。
.
表示除换行符外的任何字符,所以需要加反斜线以转义点号,即为\.
。
因此(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.)
的含义是一个0~255的整数加上一个点号。
而{3}
表示将之前的内容重复3次,即将一个0~255的整数加上一个点号这个内容重复3次。
最后再补上一个0~255的整数,即为所求。
【正则表达式】IPv4地址的正则匹配相关推荐
- html正则表达式识别网址,JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)...
本文实例讲述了JS正则匹配URL网址的方法.分享给大家供大家参考,具体如下: 最强的匹配网址-url的正则表达式:匹配www,http开头的一切网址 直接插入正则表达式: [a-zA-Z0-9][-a ...
- php正则匹配是否为url地址,php正则匹配网址-正则php-php正则匹配url地址
php正则表达式 正则匹配网址是否带http:// https:// if(preg_match("/\x20*https?\:\/\/.*/i","",$m) ...
- 通过百度地图模糊查询获取详细地址?正则匹配
要求:获取地址的详情? 地图:百度地图 准备:你的AK(地址:http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5),只需要注册申请就可 ...
- 正则表达式的使用,python正则匹配一个话题标签
在线实时匹配正则表达式的网站在此,很好用 [#].*?\s import re print(re.findall(r"[#].*?\s",txt)) 就全都提取出来了 接着把这些h ...
- python正则匹配ip地址_Python正则表达式匹配和提取IP地址
Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...
- 正则匹配ipv4_IPV4和IPV6正则表达式的深入讲解
IPV4和IPV6正则表达式的深入讲解,地址,写法,正则,字段,第一个 IPV4和IPV6正则表达式的深入讲解 易采站长站,站长之家为您整理了IPV4和IPV6正则表达式的深入讲解的相关内容. IPV ...
- python正则匹配空格+数字+空格_如何批量添加中文和英文数字之间的空格?用正则表达式吧...
1.中文与英文数字混合使用,排版有规范 写作中,我们经常遇到以下中文与英文.数字混用的情况. 我自学python编程,是在xue.cn上进行的.时耗方面,基础功仅需50多小时,加上很多实战,包括初步运 ...
- 使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
目录 (原创不易,你们对阿超的赞就是阿超持续更新的动力!) (以免丢失,建议收藏~~~) ------------------------------------------------------- ...
- 常用正则表达式-IP地址
常用正则表达式-IP地址 1. IPv4地址 1. IPv4地址定义 参考百度百科 IPv4使用32位(4字节)地址,因此地址空间中只有4,294,967,296(即2的32次方)个地址. 通常使用点 ...
最新文章
- 常考题 | IoU 计算
- 唠唠SE的集合-10——Collections工具类
- HTTP 304 的理解
- (转)Mat, vectorpoint2f,Iplimage等等常见类型转换
- 记录第一次部署servlet实例
- Java线程:线程交互
- php 和jsp,jsp和php哪个好?jsp和php的简单比较
- workbook加载文件路径_【Python】文件重命名(按照Excel清单)
- python判断奇数_python 中x%2 x1 判断偶数奇数 性能对比
- oracle 行数大于一时,oracle – PL / SQL ORA-01422:精确的提取返回超过请求的行数
- 1小时搞懂设计模式之工厂模式(简单工厂)
- 【报告分享】2020年教育行业OMO模式转型现状研究报告.pdf(附下载链接)
- am相干解调matlab文档,AM调制与相干解调
- CVE-2022-1292漏洞修复
- Mysql创建用户与赋权限操作
- 【AI简报20210611期】Arm v9架构来啦、开源实战教你实现文字识别!
- 阿里云国际版代充-阿里云无影云桌面是什么?
- AUC的置信区间和两个AUC的差异性比较
- mac时间机器的使用
- python开发语音录入_基于python实现语音录入识别代码实例
热门文章
- #前端# 解决前端页面滑动不顺畅的问题
- 基于百度AI+jquery-webcam+servlet实现人脸识别登录,兼容各主流浏览器
- (转)你真的会写单例模式吗——Java实现
- MySql数据库表类型MYISAM与InnoDB的区别
- Commerce Server 2002 Starter Site and 2006 overview
- java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现
- mysql 排名_学会在MySQL中实现Rank高级排名函数,所有取前几名问题全部解决.
- 怎样判断电饭锅温度传感器的好坏?_空调温度传感器的作用与检测。
- 意大利_【解读】去意大利留学,一定要学意大利语吗?意大利语难吗?
- Spring事务详解与使用