Chinaunix首页 | 论坛 | 博客
  • 博客访问: 370890
  • 博文数量: 150
  • 博客积分: 3423
  • 博客等级: 中校
  • 技术积分: 1005
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-15 09:04
文章分类

全部博文(150)

文章存档

2012年(2)

2011年(148)

分类: 嵌入式

2011-08-08 19:25:06

最近研究正则表达式。看到很多朋友需要IP地址的正则表达式,网上找了一下,没有找到完整解决IP地址的正则表达式,所以就自己写了一个,与大家分享。


1、解析IP地址正则表达式:((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))


2、分析:IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开。以 255.226.168.1为例,可以分析出IP地址的组成特点,250——255、200——249、0——199,这三种情况可以分开考虑,最简单的 是250——255,用正则可以写成:25[0-5];200——249可以这样写:2[0-4]\d;0——199有些麻烦,不过可以继续分拆,这样写 起来更加简单明了,0——9、10——99、100——199,这样分开考虑,就得到了三个式子:\d、\d\d(有冗余)、1\d\d,这三个式子我们 可以像合并同类项一样把它们合并到一起:[01]?\d?\d。这样我们就得到了一段数字的正则表达式:25[0-5]|2[0-4]\d|[01]? \d?\d,后三段每段数字之前都有一个“.”号,合并起来考虑,前三段数字可以写到一起:(25[0-5]|2[0-4]\d|[01]?\d?\d) \.,然后单独写第四段数字:25[0-5]|2[0-4]\d|[01]?\d?\d,所以整个合起来的正则表达式就是:((?: (?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))


如果你对正则表达式没有一个基础的认识,建议你去网上搜些正则表达式的基本语法看一下。如果你够聪明,也许一个小时你就可以搞定。


在这里抛砖引玉,希望能得到您更好的意见或者建议!

PS:给大家一个正则解析工具,软件很小很好很强大!网址:

阅读(1661) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~